+  HandyCache форум
|-+  Главная категория» Новые предложения» Гарантированное обновление файлов в кэше браузера
Имя пользователя:
Пароль:
Страниц: [1]   Вниз
  Отправить эту тему    Печать  
Автор Тема: Гарантированное обновление файлов в кэше браузера  (Прочитано 12505 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Дем
Постоялец
***

Репутация: +6/-3
Offline Offline

Сообщений: 167



« : 15 января 2007, 11:03:57 »

Сейчас If-Modified-Since применяется ко всему, находящемуся в кеше.
предлагаю исключить из этого "всего" не до конца догруженные файлы.
Исходя из того, что иного пути кроме НС не было и в кеш браузера они тоже попали не полностью.
« Последнее редактирование: 23 сентября 2008, 10:00:33 от DenZzz » Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #1 : 15 января 2007, 12:04:17 »

Дем 
 
Подожди, "If-Modified-Since" HC и сейчас НЕ вставляет в запрос, если у него этот файл в кэше недокачан! Недокаченный файл лежит в кэше HC совсем под другим расширением (.new) и HC его использует только для временных целей во время закачки!

Другое дело, что "If-Modified-Since" может вставлять сам браузер, который, видимо, не знает, что файл не был докачан! И что тут поделать? Это проблема браузера!

Цитировать
Исходя из того, что иного пути кроме НС не было и в кеш браузера они тоже попали не полностью.

Спорное утверждение! Файлы вполне могут попасть в кэш браузера, минуя HC, например, напрямую или через другой прокси (Проксомитрон, CProxy и т.п.)!
Сообщить модератору   Записан
Кирилл
Beta tester
*****

Репутация: +5/-1
Offline Offline

Сообщений: 124


« Ответ #2 : 15 января 2007, 12:12:12 »

А значит неплохо ввести опцию "Игнорировать If-Modified-Since от браузера при отсутствии файла в кеше HC"!
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #3 : 15 января 2007, 12:13:00 »

Цитировать
Другое дело, что "If-Modified-Since" может вставлять сам браузер, который, видимо, не знает, что файл не был докачан!
HC тоже может не знать, что файл был недокачан. Если в заголовке не было длины файла, то я не знаю способа узнать был докачан файл или нет.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #4 : 15 января 2007, 12:44:48 »

mai62

Цитировать
Если в заголовке не было длины файла, то я не знаю способа узнать был докачан файл или нет.

Хм, а расширение .new при обрыве связи в этом случае отбрасывается и файл переименовывается в нормальный файл, как будто он был докачан?
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #5 : 15 января 2007, 12:58:37 »

Кирилл

Цитировать
А значит неплохо ввести опцию "Игнорировать If-Modified-Since от браузера при отсутствии файла в кеше HC"!

Мы "танцевали" от обратного! Ситуация: у пользователя есть большой собственный кэш в браузере и он впервые поставил HC на пробу. Но его начинает доставать проблема низкой экономии и он сносит HC, разочаровавшись!

Тогда было решено сделать так:

Цитировать
Отвечать "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 заново! Можно также включить автоматическую очистку кэша при выходе из браузера.

В общем, обозначенная ситуация раньше обрабатывалась не оптимально и вызывала лишнюю нагрузку на систему, а также расход трафика и времени! Сейчас это исправлено.
Сообщить модератору   Записан
Дем
Постоялец
***

Репутация: +6/-3
Offline Offline

Сообщений: 167



« Ответ #6 : 15 января 2007, 16:00:24 »

DenZzz
Цитировать
Другое дело, что "If-Modified-Since" может вставлять сам браузер, который, видимо, не знает, что файл не был докачан! И что тут поделать? Это проблема браузера!
Да, его вставляет браузер в своём запросе к НС.
Но НС, видя, что у него лежит недокачанный кусок - всё-таки говорит, что всё ОК.

Цитировать
Спорное утверждение! Файлы вполне могут попасть в кэш браузера, минуя HC, например, напрямую или через другой прокси (Проксомитрон, CProxy и т.п.)!
Могут. Но раз у НС лежит кусок файла - значит его пытались через него загрузить, не так ли? Улыбка
Про полностью отсутствующие я не говорю...

Цитировать
Мы "танцевали" от обратного! Ситуация: у пользователя есть большой собственный кэш в браузере и он впервые поставил HC на пробу. Но его начинает доставать проблема низкой экономии и он сносит HC, разочаровавшись!
Это другая ситуация - "файл в кеше НС отсутствует, а в кеше браузера есть". Тут в самом деле нынешний вариант хорош.
mai62
Цитировать
HC тоже может не знать, что файл был недокачан. Если в заголовке не было длины файла, то я не знаю способа узнать был докачан файл или нет.
Ну это да...
Хотя - такие файлы как правило - динамический контент, и подлежат безусловному обновлению при следующей загрузке независимо от.
Хотя если файл сжатый - его можно попробовать протестить на предмет целостности архива, но это ресурс проца жрать будет...
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #7 : 15 января 2007, 16:58:16 »

Дем

Цитировать
Да, его вставляет браузер в своём запросе к НС.
Но НС, видя, что у него лежит недокачанный кусок - всё-таки говорит, что всё ОК.

Может, тебя это разочарует, но те файлы .new, которые лежат в кэше - это проявление бага HC!
Эти файлы должны создаваться только на время закачки и удаляться сразу после разрыва коннекта, независимо от того, закачался файл полностью или нет!
И mai62 с этим багом уже ни раз боролся и продолжает борьбу!

Поэтому, HC при нормальной работе ничего не помнит об успешности прежних закачек, т.к. никаких временных файлов .new в кэше не должно оставаться в принципе!
Сообщить модератору   Записан
Дем
Постоялец
***

Репутация: +6/-3
Offline Offline

Сообщений: 167



« Ответ #8 : 15 января 2007, 22:11:55 »

А зачем с ними бороться? их докачивать надо... Улыбка
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #9 : 15 января 2007, 23:45:39 »

Дем

Цитировать
А зачем с ними бороться? их докачивать надо...

Не всегда! Может, пользователь сам прервал закачку страницы, т.к. выяснил, что она ему не интересна! И останется в кэше куча недокаченных файлов, которые никогда не будут докачены...

А вообще, тема докачки недокаченных файлов интересна и как-то уже поднималась на ру-борде! Вроде и mai62 был не против. Тогда во многих случаях и менеджер закачек не понадобится...

Создал отдельную тему по Докачке файлов!
Сообщить модератору   Записан
Дем
Постоялец
***

Репутация: +6/-3
Offline Offline

Сообщений: 167



« Ответ #10 : 16 января 2007, 11:50:47 »

Возвращаясь к теме.
Может предусмотреть опциональный вариант поведения - отдавать "304 Not Modified" только при наличии полноценного файла в кеше НС?
А иначе - качать/404
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #11 : 16 января 2007, 14:20:48 »

Дем

Цитировать
Может предусмотреть опциональный вариант поведения - отдавать "304 Not Modified" только при наличии полноценного файла в кеше НС?

А нужно ли? Тогда опять всплывет вторая проблема:

Если файла не было в кэше HC, он транслировал запрос браузера на удаленный сервер. Таких запросов могло быть очень много, тратя время и трафик, а в кэш HC объекты так и не попадали, т.к. удаленный сервер часто просто отвечал "304"!

Поэтому и было решено, чтобы HC отвечал "304 Not Modified" независимо от наличия файла в его кэше, если сработал список "Не обновлять" или "Только из кэша"! 
Сообщить модератору   Записан
Кирилл
Beta tester
*****

Репутация: +5/-1
Offline Offline

Сообщений: 124


« Ответ #12 : 16 января 2007, 14:32:41 »

Цитировать
Мы "танцевали" от обратного! Ситуация: у пользователя есть большой собственный кэш в браузере и он впервые поставил HC на пробу. Но его начинает доставать проблема низкой экономии и он сносит HC, разочаровавшись!
Это понятно. Но если HandyCache ставится на "свежую" систему, то собственный кеш браузера логично игнорировать. Потому я и написал про такую опцию, по умолчанию, естественно, отключенную.
Сообщить модератору   Записан
Дем
Постоялец
***

Репутация: +6/-3
Offline Offline

Сообщений: 167



« Ответ #13 : 16 января 2007, 22:09:29 »

Цитировать
Если файла не было в кэше HC, он транслировал запрос браузера на удаленный сервер. Таких запросов могло быть очень много, тратя время и трафик, а в кэш HC объекты так и не попадали, т.к. удаленный сервер часто просто отвечал "304"!
так я и говорю - опцией, только для тех, кому надо.
Сообщить модератору   Записан
luongo
Гость
« Ответ #14 : 16 августа 2008, 15:55:42 »

Здравствуйте! Помогите пожалуйста. Иногда нужно чтобы страница в браузере гарантированно обновилась. То есть запретить отдавать браузеру ответ 304 Not Modified и выдать полный ответ. И повесить это действие на горячую клавишу.
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #15 : 17 августа 2008, 13:31:29 »

На вкадке списка Не обновлять можно назначить горячую клавишу для управления списком или клавишу для временного отключения списка.
Сообщить модератору   Записан
luongo
Гость
« Ответ #16 : 17 августа 2008, 14:34:36 »

Вы не поняли. Хочется обновить страницу целиком (или один url) в кэше БРАУЗЕРА. Надо отсекать посылаемые браузером заголовки If-None-Match и If-Modified-Since. Работать так как будто этих заголовков не было. И такое действие повесить на горячую клавишу.
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #17 : 17 августа 2008, 14:42:51 »

Сейчас такой функции нет. В след. версии будут скрипты для заголовков запросов, они смогут такое делать.



 Отлично! Реализовано с помощью скриптов Lua в HC 1.00 RC2 (1.0.0.103) и выше!
« Последнее редактирование: 22 сентября 2008, 13:18:34 от DenZzz » Сообщить модератору   Записан
Страниц: [1]   Вверх
  Отправить эту тему    Печать  

 
Перейти в: