Уведомления

Группа в Telegram: @pythonsu

#1 Май 15, 2011 11:54:00

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

отправка 304 с разных страниц

на сайте много страниц:
/post/123
/post/555
/post/987654321


по всем этим урлам отдается одно и тоже содержимое, если браузер зайдет повторно на страницу - естественно получит 304,
как сделать что-б он со всех урлов получал 304 изначально, если у него есть этот контент?

я так понял браузеры делают кеш-контроль в разрезе полного урла ( /post/123?param=555 ) сюда не входит только то что за ‘#’
т.е. вот так будет работать, т.к. считается одним урлом:
/post/#123
/post/#555
/post/#987654321

но это не штатно, есть ли более разумный способ?

Офлайн

#2 Май 15, 2011 11:55:56

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

отправка 304 с разных страниц

хочу прояснить:
/post/#123
/post/#555
по этому значению (123, 555), через ajax с сайта будет вытягиваться информация.

Офлайн

#3 Май 15, 2011 13:44:19

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

отправка 304 с разных страниц

Как бы есть ETag: http://en.wikipedia.org/wiki/HTTP_ETag как раз для кеширования



Офлайн

#4 Май 15, 2011 16:24:25

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

отправка 304 с разных страниц

Андрей Светлов
Как бы есть ETag: http://en.wikipedia.org/wiki/HTTP_ETag как раз для кеширования
ETag или Last-Modified работают только в рамках одного урла. Клиент просто не будет присылать If-None-Match или If-Modified-Since, если ресурс отличается от того, с которого были получены заголовки.



Офлайн

#5 Май 15, 2011 16:45:17

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

отправка 304 с разных страниц

Андрей Светлов
Как бы есть ETag: http://en.wikipedia.org/wiki/HTTP_ETag как раз для кеширования
не подходит, т.к. клиент не возвращает “If-None-Match” если урл сменился

Офлайн

#6 Май 15, 2011 16:48:47

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

отправка 304 с разных страниц

Александр Кошелев
Андрей Светлов
Как бы есть ETag: http://en.wikipedia.org/wiki/HTTP_ETag как раз для кеширования
ETag или Last-Modified работают только в рамках одного урла. Клиент просто не будет присылать If-None-Match или If-Modified-Since, если ресурс отличается от того, с которого были получены заголовки.
только что увидел сообщение, тестировал.

Отредактировано (Май 15, 2011 16:49:33)

Офлайн

#7 Май 15, 2011 18:13:00

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

отправка 304 с разных страниц

Так /post/123 и /post/555 — это именно одна страница и кэш должен быть общим?
Не сразу понял. Нет идей.



Офлайн

#8 Май 15, 2011 18:19:58

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

отправка 304 с разных страниц

Андрей Светлов
Так /post/123 и /post/555 — это именно одна страница и кэш должен быть общим?
Очевидно что это ошибка проектирования и не могут два по факту разных ресурса быть по сути одним и тем же.



Офлайн

#9 Май 15, 2011 19:26:48

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

отправка 304 с разных страниц

Александр Кошелев
Андрей Светлов
Так /post/123 и /post/555 — это именно одна страница и кэш должен быть общим?
Очевидно что это ошибка проектирования и не могут два по факту разных ресурса быть по сути одним и тем же.
Фишка такая: есть напичканная страница в 10..20кб - шаблон, каждая страница строится по этому шаблону, а изменяемого контента там на 1..3кб.

получается так (цель):
1) клиент обращается на любую страницу, моментально получает 304, - тут же начинает строить страницу и выполнять скрипты.
2) полетел ajax запрос на получение контента, получили 2кб - вставили.

в итоге клиент получает только контент, без постоянного получения шаблона.

>Не сразу понял. Нет идей.
значит остается только метод с хранением параметров за “#”


в голову пришел такой вариант: весь html+js+css выкидываем во внешний файл который будет всегда “304”, а по обращению клиента отдавать 512байтовый файл который будет разворачивать этот внешний файл.

Офлайн

#10 Май 15, 2011 20:26:46

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

отправка 304 с разных страниц

o7412369815963
в голову пришел такой вариант: весь html+js+css выкидываем во внешний файл который будет всегда “304”, а по обращению клиента отдавать 512байтовый файл который будет разворачивать этот внешний файл.
Это похоже на правильное решение.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version