Главная
Форум
Контакты
Купить
Поддержи проект
Поиск
Искать:
Расширенный поиск
[Закрыть]
Правила форума
Войти
Регистрация
Russian
English
HandyCache форум
Главная категория
»
Общие вопросы
»
Ответ "304 Not Modified (HC)"
Имя пользователя:
1 час
1 день
1 неделя
1 месяц
Навсегда
Пароль:
Страниц: [
1
]
2
3
...
5
Все
Вниз
« предыдущая тема
следующая тема »
Отправить эту тему
Печать
Автор
Тема: Ответ "304 Not Modified (HC)" (Прочитано 58034 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Ответ "304 Not Modified (HC)"
«
:
03 марта 2007, 13:34:01 »
DenzZzz
Раз уж встал вопрос об учете при определении процента экономии оветов "304 Not Modified" на запрос "lf-Modified-Since" клиента, то расскажи, плиз, подробнее, как работает эта опция. Давно хотел вникнуть - но все забывал спросить (исходим из того, я читал
краткое описание
, т.е. общий принцип ясен).
Интересует, как учитываются критерии свежести, когда и как выдается из кэша более новый файл, если таковой есть.
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Ответ "304 Not Modified"
«
Ответ #1 :
03 марта 2007, 14:56:33 »
Цитата с Wiki:
Цитировать
Отвечать "304 Not Modified" на запрос "lf-Modified-Since" браузера
Если URL есть в списке "Не обновлять" или "Только из кэша", то логично просто отослать браузеру ответ "304 Not Modified".
Как происходило раньше до версии 0.98b1. Возможны 2 варианта - файл есть в кэше HC и файла нет в кэше HC:
В первом случае, HC повторно отдавал файл из кэша, хотя мог бы просто сказать: "304 Not Modified" и не нагружать диск и систему лишним чтением/передачей файла.
А во втором случае, HC транслировал запрос на удаленный сервер, но мог бы также просто сказать "304 Not Modified". Тем более, что таких запросов может быть очень много, тратя время и трафик, а в кэш HC объекты так и не попадут!
Конечно, есть вероятность, что файл в кэше браузера стар и HC не даст ему обновиться, но когда мы пишем файл в список "Не обновлять" без критерия свежести или в "Только из кэша", мы к этому заранее готовы!
К тому же, у пользователя всегда есть возможность очистить собственный кэш браузера и закачать все файлы из кэша HC заново! Можно также включить автоматическую очистку кэша при выходе из браузера.
В общем, обозначенная ситуация раньше обрабатывалась не оптимально и вызывала лишнюю нагрузку на систему, а также расход трафика и времени! Сейчас это исправлено.
Михаил
Цитировать
Интересует, как учитываются критерии свежести, когда и как выдается из кэша более новый файл, если таковой есть.
Независимо
от наличия файла в кэше HC
если сработало
правило в списке "Только из кэша" или правило БЕЗ критерия свежести в списке "Не обновлять", то HC формирует ответ "304 Not Modified", т.е. велит браузеру брать файл из его кэша.
Если проверяется правило с заполненным критерием свежести в списке "Не обновлять", то:
-
Если файл
есть
в кэше HC
и
его дата в кэше
не просрочена
по критерию свежести, то правило из списка "Не обновлять" срабатывает и HC формирует ответ "304 Not Modified", т.е. велит браузеру брать файл из его кэша.
-
Если файл
есть
в кэше, но его дата в кэше
просрочена
по критерию свежести,
или
критерий свежести
нельзя проверить
из-за отсутствия файла в кэше, то правило из списка "Не обновлять" считается НЕ сработавшим - переходим к проверке следующего правила или, если достигнут конец списка, запрос браузера транслируется на сервер.
«
Последнее редактирование: 03 марта 2007, 23:37:07 от DenZzz
»
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Ответ "304 Not Modified"
«
Ответ #2 :
03 марта 2007, 22:04:37 »
Цитата: DenZzz от 03 марта 2007, 14:56:33
Если файла
нет
в кэше HC ... то список "Не обновлять" считается НЕ сработавшим - запрос браузера транслируется на сервер.
.....
Независимо
от наличия файла в кэше HC
если сработало
правило БЕЗ критерия свежести в списке "Не обновлять" ... то HC формирует ответ "304 Not Modified", т.е. велит браузеру брать файл из его кэша.
Так что все-таки должно происходить, когда файла нет в кэше НС?
Добавлено:
И еще вопрос. Если от клиента поступило If-Modified-Since и стоит опция "Добавлять IMS", изменяется ли в этом случае исходное IMS при пересылке запроса на сервер?
«
Последнее редактирование: 03 марта 2007, 22:14:14 от Михаил
»
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Ответ "304 Not Modified"
«
Ответ #3 :
03 марта 2007, 22:24:20 »
Цитата: Михаил от 03 марта 2007, 22:04:37
Так что все-таки должно происходить и что происходит, когда файла нет в кэше НС?
Поправил свой пост выше... Так понятнее?
Цитировать
Добавлено:
И еще вопрос. Если от клиента поступило If-Modified-Since и стоит опция "Добавлять IMS", изменяется ли в этом случае исходное IMS при пересылке запроса на сервер?
Нет. "If-Modified-Since" остается браузерным.
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Ответ "304 Not Modified"
«
Ответ #4 :
03 марта 2007, 22:39:32 »
Цитата: DenZzz от 03 марта 2007, 22:24:20
Поправил свой пост выше... Так понятнее?
М-да... Неясно и так. Давай попробуем еще раз.
"Обычный" порядок (запрос от клиента без IMS): После проверки списка "Т" и отсутствия в нем файл проверяется на наличие его в кэше. Если есть - идет проверка списка "Н". Если нет в кэше - качаем из сети.
Если приходит запрос с IMS, этот порядок как-то меняется? Или что-то другое происходит, не пойму никак.
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Ответ "304 Not Modified"
«
Ответ #5 :
03 марта 2007, 23:13:52 »
Цитата: Михаил от 03 марта 2007, 22:39:32
"Обычный" порядок (запрос от клиента без IMS): После проверки списка "Т" и отсутствия в нем файл проверяется на наличие его в кэше. Если есть - идет проверка списка "Н". Если нет в кэше - качаем из сети.
Если приходит запрос с IMS, этот порядок как-то меняется? Или что-то другое происходит, не пойму никак.
Если получен запрос с "If-Modified-Since":
1. Проверяем список Т - если сработал, то наличие файла в кэше можно не проверять, а сразу ответить браузеру "304".
2. Если Т не сработал, то проверяем наличие файла в кэше.
2а. Если файл есть в кэше, то проверяем все строки списка Н.
2б. Если файла нет в кэше, то проверяем в списке Н только строки без критерия свежести.
3. Если сработала хоть одна строка списка Н, то отвечаем браузеру "304".
4. Если список Н не сработал, грузим файл из Инета.
Вот такая логика.
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Ответ "304 Not Modified"
«
Ответ #6 :
03 марта 2007, 23:46:51 »
DenZzz
Теперь гораздо понятней.
Да... пожалуй, когда мы в такой ситуации отвечаем "304", то при расчете процента экономии этих телодвижений учесть никак не удастся...
Только вот такой вопрос еще:
1. Если файл есть в кэше НС, не просрочен и IMS < Даты изменения этого файла, почему мы отвечаем "304", а не отдаем файл из кэша?
2. Если файла нет в кэше НС, почему в случае наличия правила без критерия свежести мы отвечаем "304", а не лезем в сеть?
По ходу пьесы получилось, что вопросЫ
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Ответ "304 Not Modified"
«
Ответ #7 :
04 марта 2007, 00:06:37 »
Цитата: Михаил от 03 марта 2007, 23:46:51
1. Если файл есть в кэше НС, не просрочен и IMS < Даты изменения этого файла, почему мы отвечаем "304", а не отдаем файл из кэша?
Потому что мы ничего не знаем о том, какой "Last-Modified" имел файл, когда мы его записали в кэш HC. Вполне вероятно, что у браузера тот же файл, но закаченный мимо HC...
Цитировать
2. Если файла нет в кэше НС, почему в случае наличия правила без критерия свежести мы отвечаем "304", а не лезем в сеть?
А зачем нам лезть в сеть, если нам наплевать на свежесть этого файла, что мы и прописали в списке Н.
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Ответ "304 Not Modified"
«
Ответ #8 :
04 марта 2007, 00:16:56 »
Цитата: DenZzz от 04 марта 2007, 00:06:37
Потому что мы ничего не знаем о том, какой "Last-Modified" имел файл, когда мы его записали в кэш HC. Вполне вероятно, что у браузера тот же файл, но закаченный мимо HC...
Почему отвергаем вероятность противоположного исхода (у клиента старый и неактуальный файл)?
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Ответ "304 Not Modified"
«
Ответ #9 :
04 марта 2007, 00:25:15 »
Цитата: Михаил от 04 марта 2007, 00:16:56
Почему отвергаем вероятность противоположного исхода (у клиента старый и неактуальный файл)?
Потому что:
1. Мы не можем это проверить.
2. У клиента есть простой способ синхронизировать кэши - принудительно очистить кэш браузера или включить его автоочистку при выходе.
P.S. Только не предлагай хранить еще и "Last-Modified" - овчинка выделки не стоит...
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Ответ "304 Not Modified"
«
Ответ #10 :
04 марта 2007, 00:30:45 »
Цитата: DenZzz от 04 марта 2007, 00:25:15
P.S. Только не предлагай хранить еще и "Last-Modified" - овчинка выделки не стоит...
Пока еще не созрел до этого предложения... Но чем черт не шутит
Предлагаю отдавать файл в этом случае (если он есть в кэше НС, не просрочен и IMS < Даты изменения этого файла) из кэша НС.
Добавлено:
чтоб браузер и дальше мог рационально вставлять IMS, можно выдачу этого файла из кэша сопроводить полем Last-Modified = Дата изменения файла. И подумать, мож это поле стоит втыкать вообще всегда, когда файл берется из кэша? Или оно и сейчас втыкается?
«
Последнее редактирование: 04 марта 2007, 00:44:58 от Михаил
»
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Ответ "304 Not Modified"
«
Ответ #11 :
04 марта 2007, 00:48:26 »
Цитата: Михаил от 04 марта 2007, 00:30:45
Предлагаю отдавать файл в этом случае (если он есть в кэше НС, не просрочен и IMS < Даты изменения этого файла) из кэша НС.
Для этого придется постоянно парсить IMS, а полезность этой процедуры, скорее всего, будет не велика...
Цитировать
Добавлено:
чтоб браузер и дальше мог рационально вставлять IMS, можно выдачу этого файла из кэша сопроводить полем Last-Modified = Дата изменения файла.
Так всегда и делается, если ты не заметил! Иначе браузер вообще не будет формировать IMS...
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Ответ "304 Not Modified"
«
Ответ #12 :
04 марта 2007, 00:57:01 »
Цитата: DenZzz от 04 марта 2007, 00:48:26
Для этого придется постоянно парсить IMS, а полезность этой процедуры, скорее всего, будет не велика...
1. Мы ж и так парсим заголовок. Считать значение IMS легко в ходе этой процедуры.
2. Но это не главное. Главное - не допустить выдачу пользователю неактуального файла!
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Ответ "304 Not Modified"
«
Ответ #13 :
04 марта 2007, 01:35:40 »
Михаил
Цитировать
Предлагаю отдавать файл в этом случае (если он есть в кэше НС, не просрочен и IMS < Даты изменения этого файла) из кэша НС.
У того, что ты предлагаешь, есть побочный эффект!
Представь, зашли на новый сайт, картинки загрузились в кэш браузера и записались в кэш HC. Нажали "Обновить" и получили перезагрузку всех тех же картинок, но теперь из кэша HC, т.к. IMS с сайта < Даты записи в кэш HC !
Причем, такая ситуация будет встречаться постоянно, в отличие от твоих опасений, что у клиента вдруг окажется старый и неактуальный файл! Т.к. у клиента есть простой способ этого избежать - просто временами чистить кэш браузера!
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Ответ "304 Not Modified"
«
Ответ #14 :
04 марта 2007, 12:30:14 »
DenZzz
Молча выдать файл из кэша - гораздо
быстрее и прозрачнее
, чем озабочивать пользователя чисткой кэша браузера. Последнее к тому же:
- заранее неизвестно, когда надо делать, чтоб не получить неактуальный файл;
- сопряжено с дополнительной ненужной нагрузкой на пользователя.
С каких пор взятие из собственного кэша НС стало "побочным эффектом"?
Теперь представь ситуацию: два пользователя А и Б на одном кэше. У А правило в списке "Н" с критерием свежести, к примеру, 10 минут для новостного сайта. У Б такого правила нет. Оба пользуются сайтом регулярно. Пусть файл записался в кэш, и пошли эти самые 10 минут. После этого
каждые
5 минут Б обращается к сайту, и файл в кэше обновляется. Чтоб проще было представить такую ситуацию, пусть пользователь Б не один, а их много. Тогда пользователь А
НИКОГДА
не дождется обновления файла, пока его клиент будет посылать IMS!
Такого допускать, на мой взгляд, нельзя.
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Ответ "304 Not Modified"
«
Ответ #15 :
04 марта 2007, 13:01:11 »
Цитата: Михаил от 04 марта 2007, 12:30:14
С каких пор взятие из собственного кэша НС стало "побочным эффектом"?
С тех пор, как было решено, что повторно посылать браузеру файл, который у него уже есть - неоптимально и бессмысленно!
Цитировать
Теперь представь ситуацию: два пользователя А и Б на одном кэше.
...
Чтоб проще было представить такую ситуацию, пусть пользователь Б не один, а их много.
Вообще-то, писать в общий кэш должен только один пользователь - другие только читать! Так рекомендуется...
А если HC стоит только на сервере, то и правила у всех одни!
Цитировать
Тогда пользователь А
НИКОГДА
не дождется обновления файла, пока его клиент будет посылать IMS!
Такого допускать, на мой взгляд, нельзя.
Есть сила в твоих словах!
Надо только решить, какое из "зол" большее:
- частые повторные отправки неизменившихся файлов пользователям
или
- возможное необновление старого файла у клиента в некоторых редких ситуациях...
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Ответ "304 Not Modified"
«
Ответ #16 :
04 марта 2007, 13:11:24 »
DenZzz
Цитировать
Надо только решить, какое из "зол" большее:
- частые повторные отправки неизменившихся файлов пользователям
или
- возможное необновление старого файла у клиента в некоторых редких ситуациях...
"Частота" и "редкость" ситуаций будут плавать в зависимости от конкретной конфигурации/стиля серфинга.
К тому же зачем нам вообще неадекватная информация, пусть даже в редких случаях, не говоря уж о варианте частых?
«
Последнее редактирование: 04 марта 2007, 13:28:26 от Михаил
»
Сообщить модератору
Записан
cepera_ang
Beta tester
Репутация: +9/-4
Offline
Сообщений: 355
Re: Ответ "304 Not Modified"
«
Ответ #17 :
04 марта 2007, 14:58:38 »
Цитата: Михаил от 04 марта 2007, 13:11:24
К тому же зачем нам вообще неадекватная информация, пусть даже в редких случаях, не говоря уж о варианте частых?
Зачем нам вообще НС с правилами прямо указывающими выдавать старый файл вместо проверки, даже если это прямо запрещает сервер, если мы невероятно боимся даже редких случаев необновления файла, не говоря уже о частых?
Отличный алгоритм, глюков от его работы словить затруднительно, гораздо проще накосячить где-нибудь в другом месте...
Сообщить модератору
Записан
v0lt
Beta tester
Репутация: +7/-0
Offline
Сообщений: 127
Re: Ответ "304 Not Modified"
«
Ответ #18 :
04 марта 2007, 16:53:24 »
Михаил
Я вообще критерием свежести не пользуюсь. В списке "Не обновлять" у меня только графика и др. оформление. Если надо обновить картинку, то просто держа горячую клавишу жму на "Загрузить изображение". Мне не хочется, чтобы незаблокированные банеры втихую обновлялись.
Сообщить модератору
Записан
Михаил
Gold beta tester
Репутация: +337/-14
Offline
Сообщений: 5513
Re: Ответ "304 Not Modified"
«
Ответ #19 :
04 марта 2007, 17:49:28 »
серега_ang
Цитировать
Зачем нам вообще НС с правилами прямо указывающими выдавать старый файл вместо проверки, даже если это прямо запрещает сервер, если мы невероятно боимся даже редких случаев необновления файла, не говоря уже о частых?
Что толку от оптимизации, когда она достигается ценой правильности работы? Зачем нам неправильно (не так как мы хотим) работающий НС?
v0lt
Цитировать
Я вообще критерием свежести не пользуюсь. В списке "Не обновлять" у меня только графика и др. оформление. Если надо обновить картинку, то просто держа горячую клавишу жму на "Загрузить изображение". Мне не хочется, чтобы незаблокированные банеры втихую обновлялись.
Ты, видимо, недопонял. Либо я недопонял твою мысль. Речь об обновлении (в смысле из интернета) пока не идет вовсе. Выбор между:
- ответить клиенту: "304" в надежде (на мой взгляд, необоснованной), что это не приведет к выдаче устаревшей информации;
- выдать файл из кэша НС с гарантией актуальности данных.
Сообщить модератору
Записан
Страниц: [
1
]
2
3
...
5
Все
Вверх
Отправить эту тему
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Главная категория
-----------------------------
=> Общие вопросы
=> Новые предложения
=> Дополнения, плагины
=> Сжатие трафика
=> English forum
=> Indonesian forum
-----------------------------
Гостевая
-----------------------------
=> Гостевая
-----------------------------
Дела домашние
-----------------------------
=> Сайт и форум HandyCache
=> Курилка
© 2006-2014 HandyCache Team. Все права защищены.
Загружается...