Название: Гарантированное обновление файлов в кэше браузера Отправлено: Дем от 15 января 2007, 11:03:57 Сейчас If-Modified-Since применяется ко всему, находящемуся в кеше.
предлагаю исключить из этого "всего" не до конца догруженные файлы. Исходя из того, что иного пути кроме НС не было и в кеш браузера они тоже попали не полностью. Название: Re: Логика поведения If-Modified-Since Отправлено: DenZzz от 15 января 2007, 12:04:17 Дем
Подожди, "If-Modified-Since" HC и сейчас НЕ вставляет в запрос, если у него этот файл в кэше недокачан! Недокаченный файл лежит в кэше HC совсем под другим расширением (.new) и HC его использует только для временных целей во время закачки! Другое дело, что "If-Modified-Since" может вставлять сам браузер, который, видимо, не знает, что файл не был докачан! И что тут поделать? Это проблема браузера! Цитировать Исходя из того, что иного пути кроме НС не было и в кеш браузера они тоже попали не полностью. Спорное утверждение! Файлы вполне могут попасть в кэш браузера, минуя HC, например, напрямую или через другой прокси (Проксомитрон, CProxy и т.п.)! Название: Re: Логика поведения If-Modified-Since Отправлено: Кирилл от 15 января 2007, 12:12:12 А значит неплохо ввести опцию "Игнорировать If-Modified-Since от браузера при отсутствии файла в кеше HC"!
Название: Re: Логика поведения If-Modified-Since Отправлено: mai62 от 15 января 2007, 12:13:00 Цитировать Другое дело, что "If-Modified-Since" может вставлять сам браузер, который, видимо, не знает, что файл не был докачан! HC тоже может не знать, что файл был недокачан. Если в заголовке не было длины файла, то я не знаю способа узнать был докачан файл или нет.Название: Re: Логика поведения If-Modified-Since Отправлено: DenZzz от 15 января 2007, 12:44:48 mai62
Цитировать Если в заголовке не было длины файла, то я не знаю способа узнать был докачан файл или нет. Хм, а расширение .new при обрыве связи в этом случае отбрасывается и файл переименовывается в нормальный файл, как будто он был докачан? Название: Re: Логика поведения If-Modified-Since Отправлено: DenZzz от 15 января 2007, 12:58:37 Кирилл
Цитировать А значит неплохо ввести опцию "Игнорировать If-Modified-Since от браузера при отсутствии файла в кеше HC"! Мы "танцевали" от обратного! Ситуация: у пользователя есть большой собственный кэш в браузере и он впервые поставил HC на пробу. Но его начинает доставать проблема низкой экономии (http://handycache.ru/component/option,com_simplefaq/task,display/Itemid,3/catid,7/#FAQ40) и он сносит HC, разочаровавшись! Тогда было решено сделать так: Цитировать Отвечать "304 Not Modified" на запрос "lf-Modified-Since" браузера Если URL есть в списке "Не обновлять" или "Только из кэша", то логично просто отослать браузеру ответ "304 Not Modified". Как происходило раньше до версии 0.98b1. Возможны 2 варианта - файл есть в кэше HC и файла нет в кэше HC:
Конечно, есть вероятность, что файл в кэше браузера стар и HC не даст ему обновиться, но когда мы пишем файл в список "Не обновлять" без критерия свежести или в "Только из кэша", мы к этому заранее готовы! К тому же, у пользователя всегда есть возможность очистить собственный кэш браузера и закачать все файлы из кэша HC заново! Можно также включить автоматическую очистку кэша при выходе из браузера. В общем, обозначенная ситуация раньше обрабатывалась не оптимально и вызывала лишнюю нагрузку на систему, а также расход трафика и времени! Сейчас это исправлено. Название: Re: Логика поведения If-Modified-Since Отправлено: Дем от 15 января 2007, 16:00:24 DenZzz
Цитировать Другое дело, что "If-Modified-Since" может вставлять сам браузер, который, видимо, не знает, что файл не был докачан! И что тут поделать? Это проблема браузера! Да, его вставляет браузер в своём запросе к НС. Но НС, видя, что у него лежит недокачанный кусок - всё-таки говорит, что всё ОК. Цитировать Спорное утверждение! Файлы вполне могут попасть в кэш браузера, минуя HC, например, напрямую или через другой прокси (Проксомитрон, CProxy и т.п.)! Могут. Но раз у НС лежит кусок файла - значит его пытались через него загрузить, не так ли? :)Про полностью отсутствующие я не говорю... Цитировать Мы "танцевали" от обратного! Ситуация: у пользователя есть большой собственный кэш в браузере и он впервые поставил HC на пробу. Но его начинает доставать проблема низкой экономии и он сносит HC, разочаровавшись! Это другая ситуация - "файл в кеше НС отсутствует, а в кеше браузера есть". Тут в самом деле нынешний вариант хорош.mai62 Цитировать HC тоже может не знать, что файл был недокачан. Если в заголовке не было длины файла, то я не знаю способа узнать был докачан файл или нет. Ну это да... Хотя - такие файлы как правило - динамический контент, и подлежат безусловному обновлению при следующей загрузке независимо от. Хотя если файл сжатый - его можно попробовать протестить на предмет целостности архива, но это ресурс проца жрать будет... Название: Re: Логика поведения If-Modified-Since Отправлено: DenZzz от 15 января 2007, 16:58:16 Дем
Цитировать Да, его вставляет браузер в своём запросе к НС. Но НС, видя, что у него лежит недокачанный кусок - всё-таки говорит, что всё ОК. Может, тебя это разочарует, но те файлы .new, которые лежат в кэше - это проявление бага HC! Эти файлы должны создаваться только на время закачки и удаляться сразу после разрыва коннекта, независимо от того, закачался файл полностью или нет! И mai62 с этим багом уже ни раз боролся и продолжает борьбу! Поэтому, HC при нормальной работе ничего не помнит об успешности прежних закачек, т.к. никаких временных файлов .new в кэше не должно оставаться в принципе! Название: Re: Логика поведения If-Modified-Since Отправлено: Дем от 15 января 2007, 22:11:55 А зачем с ними бороться? их докачивать надо... :)
Название: Re: Логика поведения If-Modified-Since Отправлено: DenZzz от 15 января 2007, 23:45:39 Дем
Цитировать А зачем с ними бороться? их докачивать надо... Не всегда! Может, пользователь сам прервал закачку страницы, т.к. выяснил, что она ему не интересна! И останется в кэше куча недокаченных файлов, которые никогда не будут докачены... А вообще, тема докачки недокаченных файлов интересна и как-то уже поднималась на ру-борде! Вроде и mai62 был не против. Тогда во многих случаях и менеджер закачек не понадобится... Создал отдельную тему по Докачке файлов (http://handycache.ru/component/option,com_smf/Itemid,10/topic,94.0/)! Название: Re: Логика поведения If-Modified-Since Отправлено: Дем от 16 января 2007, 11:50:47 Возвращаясь к теме.
Может предусмотреть опциональный вариант поведения - отдавать "304 Not Modified" только при наличии полноценного файла в кеше НС? А иначе - качать/404 Название: Re: Логика поведения If-Modified-Since Отправлено: DenZzz от 16 января 2007, 14:20:48 Дем
Цитировать Может предусмотреть опциональный вариант поведения - отдавать "304 Not Modified" только при наличии полноценного файла в кеше НС? А нужно ли? Тогда опять всплывет вторая проблема (http://handycache.ru/component/option,com_smf/Itemid,10/topic,91.msg625/#msg625): Если файла не было в кэше HC, он транслировал запрос браузера на удаленный сервер. Таких запросов могло быть очень много, тратя время и трафик, а в кэш HC объекты так и не попадали, т.к. удаленный сервер часто просто отвечал "304"! Поэтому и было решено, чтобы HC отвечал "304 Not Modified" независимо от наличия файла в его кэше, если сработал список "Не обновлять" или "Только из кэша"! Название: Re: Логика поведения If-Modified-Since Отправлено: Кирилл от 16 января 2007, 14:32:41 Цитировать Мы "танцевали" от обратного! Ситуация: у пользователя есть большой собственный кэш в браузере и он впервые поставил HC на пробу. Но его начинает доставать проблема низкой экономии и он сносит HC, разочаровавшись! Это понятно. Но если HandyCache ставится на "свежую" систему, то собственный кеш браузера логично игнорировать. Потому я и написал про такую опцию, по умолчанию, естественно, отключенную.Название: Re: Логика поведения If-Modified-Since Отправлено: Дем от 16 января 2007, 22:09:29 Цитировать Если файла не было в кэше HC, он транслировал запрос браузера на удаленный сервер. Таких запросов могло быть очень много, тратя время и трафик, а в кэш HC объекты так и не попадали, т.к. удаленный сервер часто просто отвечал "304"! так я и говорю - опцией, только для тех, кому надо.Название: Как обновить в кэше браузера Отправлено: luongo от 16 августа 2008, 15:55:42 Здравствуйте! Помогите пожалуйста. Иногда нужно чтобы страница в браузере гарантированно обновилась. То есть запретить отдавать браузеру ответ 304 Not Modified и выдать полный ответ. И повесить это действие на горячую клавишу.
Название: Re: Как обновить в кэше браузера Отправлено: mai62 от 17 августа 2008, 13:31:29 На вкадке списка Не обновлять можно назначить горячую клавишу для управления списком или клавишу для временного отключения списка.
Название: Re: Как обновить в кэше браузера Отправлено: luongo от 17 августа 2008, 14:34:36 Вы не поняли. Хочется обновить страницу целиком (или один url) в кэше БРАУЗЕРА. Надо отсекать посылаемые браузером заголовки If-None-Match и If-Modified-Since. Работать так как будто этих заголовков не было. И такое действие повесить на горячую клавишу.
Название: Re: Как обновить в кэше браузера Отправлено: mai62 от 17 августа 2008, 14:42:51 Сейчас такой функции нет. В след. версии будут скрипты для заголовков запросов, они смогут такое делать.
:good: Реализовано с помощью скриптов Lua в HC 1.00 RC2 (1.0.0.103) и выше!
Powered by SMF 1.1.3 SMF © 2006, Simple Machines LLC
Joomla Bridge by JoomlaHacks.com |