+  HandyCache форум
|-+  Главная категория» Новые предложения» Индексирование кэша
Имя пользователя:
Пароль:
Страниц: 1 2 [3] 4 5 6   Вниз
  Отправить эту тему    Печать  
Автор Тема: Индексирование кэша  (Прочитано 77321 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #40 : 25 февраля 2007, 15:46:28 »

Что хранить в индексе.
По-моему, необходимо сохранять также значение поля Content-Encoding: в тех случаях, когда оно есть в ответе. Тогда сможем кэшировать Gzip-ованный и т.п. контент - т.е. громадный класс файлов, который сейчас, если я правильно понимаю, мы кэшировать не в состоянии.
Сообщить модератору   Записан
NothingAnother
Beta tester
*****

Репутация: +7/-2
Offline Offline

Сообщений: 434

Spoiler


« Ответ #41 : 25 февраля 2007, 15:52:46 »

сможем кэшировать Gzip-ованный и т.п. контент - т.е. громадный класс файлов, который сейчас, если я правильно понимаю, мы кэшировать не в состоянии
Вот так новости! Шокирован Это почему же?! Крутой
Сообщить модератору   Записан

Мы тоже не всего читали Шнитке!..
© В. Вишневский
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #42 : 25 февраля 2007, 15:58:41 »

NothingAnother
Тогда объясни, плиз, как это делает НС. Я просто не в курсе. По сигнатурам распознает?
Сообщить модератору   Записан
NothingAnother
Beta tester
*****

Репутация: +7/-2
Offline Offline

Сообщений: 434

Spoiler


« Ответ #43 : 25 февраля 2007, 16:03:04 »

объясни, плиз, как это делает НС
Что значит "как"? Непонимаю В каком виде получил контент из сокета - так и положил в кэш, без всяких трансформаций. Может, ты путаешь с HTTPS?  :Улыбка
Сообщить модератору   Записан

Мы тоже не всего читали Шнитке!..
© В. Вишневский
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #44 : 25 февраля 2007, 16:09:49 »

NothingAnother
Цитировать
В каком виде получил контент из сокета - так и положил в кэш, без всяких трансформаций.
Что НС отвечает клиенту, когда передает этот файл из кэша? Формирует ли поле Content-Encoding?
Сообщить модератору   Записан
NothingAnother
Beta tester
*****

Репутация: +7/-2
Offline Offline

Сообщений: 434

Spoiler


« Ответ #45 : 25 февраля 2007, 16:19:31 »

Если в ответе сервера это поле есть - HC его от браузера не "прячет" Подмигивающий
Сообщить модератору   Записан

Мы тоже не всего читали Шнитке!..
© В. Вишневский
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #46 : 25 февраля 2007, 16:23:14 »

Вопрос-то был про то, когда НС достает файл из кэша, а не получает его с сервера   Непонимаю
Сообщить модератору   Записан
NothingAnother
Beta tester
*****

Репутация: +7/-2
Offline Offline

Сообщений: 434

Spoiler


« Ответ #47 : 25 февраля 2007, 16:34:58 »

В конец файла дописывается что-то вроде сигнатуры с инфой о кодировании, соотв. браузеру эта инфа и передаётся в поле Content-Encoding. А то, что место этой инфе - в индексе (при наличии оного) - факт!
« Последнее редактирование: 25 февраля 2007, 16:39:36 от NothingAnother » Сообщить модератору   Записан

Мы тоже не всего читали Шнитке!..
© В. Вишневский
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #48 : 25 февраля 2007, 17:35:09 »

И действительно, дописывает! Не знал! Спасибо. И Content-Type, и Content-Encoding. Обе в индекс надо будет пихать.
М-да... А вот собственно откуда возникло первоначальное подозрение о некэшировании gzip-контента:
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #49 : 25 февраля 2007, 21:07:54 »

И Content-Type, и Content-Encoding. Обе в индекс надо будет пихать.

Зачем хранить лишнюю инфу в индексе?

В первом посте этой темы речь шла только о "Content-Type" для неизвестных HC форматов!

Заголовки GZIP дописываются в конец файла, HTML - в теги, картинки распознаются по сигнатурам! Лично я не помню, когда браузер не смог правильно отобразить файл из кэша HC !
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #50 : 25 февраля 2007, 22:33:26 »

DenZzz
Цитировать
Зачем хранить лишнюю инфу в индексе?
Мне кажется, она вовсе не лишняя в случае именно gzip. Чем же лучше писать что-то в тело ответа? Другим ПО такой файл может и не разжаться как следует либо вызвать еще какую ошибку. Да и в индекс эта инфа логичней впишется.
Можешь подробно рассказать, что именно и в каких случаях дописывает НС в HTML?
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #51 : 25 февраля 2007, 22:54:42 »

Мне кажется, она вовсе не лишняя в случае именно gzip. Чем же лучше писать что-то в тело ответа? Другим ПО такой файл может и не разжаться как следует либо вызвать еще какую ошибку.

Этот файл разжимается как обычный архив любым архиватором!

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

В HTML дописывается тэг: <meta http-equiv=... > с Content-Type и кодировкой страницы, если его там не было. Например:

Код:
<meta http-equiv=Content-Type content="text/html; charset=windows-1251">
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #52 : 25 февраля 2007, 23:44:37 »

DenZzz
Все равно некультурно как-то. Тело ответа портим несвойственной ему инфой. А для индекса пары байт жалеем. Другое дело, когда метаданные хранить больше негде - тогда изощряться приходится. А тут-то чего огород городить? Или форматом gzip специально усмотрена возможность добавления в файл чего-угодно? Если так - то согласиться можно.
Цитировать
В HTML дописывается тэг...
Спасибо, буду знать. Вот здесь все красиво - запись как раз "родная" добавляется.
Сообщить модератору   Записан
Дем
Постоялец
***

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

Сообщений: 167



« Ответ #53 : 26 февраля 2007, 10:23:50 »

Заголовки GZIP дописываются в конец файла делая архив невалидным - а в ряде случаев вообще не в конец, а вместо содержимого, картинки распознаются по сигнатурам! далеко не все - только основные. Даже флеш не распознаётся.
И ещё - как ты собираешься отличить index.php который text/html от style.php который text/css?
Сообщить модератору   Записан
Сергей
Beta tester
*****

Репутация: +9/-2
Offline Offline

Сообщений: 621



« Ответ #54 : 26 февраля 2007, 10:47:52 »

Побаловался тут с Offline Explorer. Многие функции у него дублируют возможности HC фактически. Даже может работать как прокси для автономного просмотра скачанных данных. SIDы удаляет. Переадресация есть...
IMHO стоит некоторые идеи перенять у него.
Например, заголовки сохраняются в файл Descr.WD3. Такой файл лежит в корне каждой папки.
« Последнее редактирование: 26 февраля 2007, 10:51:53 от Сергей » Сообщить модератору   Записан
Сергей
Beta tester
*****

Репутация: +9/-2
Offline Offline

Сообщений: 621



« Ответ #55 : 26 февраля 2007, 11:02:54 »

Страницы с большими картинками даже проще загрузить через OE а потом скопировать пропавшие из-за отсутствия докачки файлы в кэш HC.
Сообщить модератору   Записан
DenZzz
Модератор
*****

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

Сообщений: 5589



« Ответ #56 : 26 февраля 2007, 11:42:19 »

Заголовки GZIP дописываются в конец файла делая архив невалидным - а в ряде случаев вообще не в конец, а вместо содержимого,

Примеры таких URL можно?

Цитировать
картинки распознаются по сигнатурам! далеко не все - только основные. Даже флеш не распознаётся.

Опять же, приведи примеры URL картинок, что не распознаются!
Можно добавить распознание и их сигнатур...

Цитировать
И ещё - как ты собираешься отличить index.php который text/html от style.php который text/css?

В index.php, который text/html, по заголовку <meta http-equiv=... > ! А с распознанием text/css у тебя есть какие проблемы?
Давай примеры сайтов, где из кэша что-то не так отображается!


И вообще, ты выборочно выдернул кусок текста из ответа на реплику:

По-моему, необходимо сохранять также значение поля Content-Encoding: в тех случаях, когда оно есть в ответе. Тогда сможем кэшировать Gzip-ованный и т.п. контент - т.е. громадный класс файлов, который сейчас, если я правильно понимаю, мы кэшировать не в состоянии.

А я ответил, что мы и сейчас в состоянии кэшировать "громадный класс файлов" и что не надо сохранять "Content-Type" для известных HC форматов!

Для неизвестных пока форматов можно либо сохранять "Content-Type", либо попытаться добавить их распознание по сигнатурам!
Сообщить модератору   Записан
Дем
Постоялец
***

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

Сообщений: 167



« Ответ #57 : 26 февраля 2007, 22:48:05 »

Цитировать
Примеры таких URL можно?
Невалидным - собственно любой, стандарт gzip не предусматривает такую дозапись.
А "вместо" - это просто сбой при записи какой-то. периодически происходит, независимо от урла. А при следующей загрузке - всё ОК. А почему программа считает длину данных равной нулю - ХЗ.
Что распознаётся по сигнатурам, а что нет - это автора спрашивать надо. И для тех файлов, которые распознаются - действительно в базу писать лишнего не надо. Хотя, опять же - неизвестно что проще - взять значение из базы или сигнатуру анализировать.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #58 : 19 марта 2007, 14:27:48 »

Проблемы начинаются при попытке обдумать практическую сторону:
  • в каком формате хранить эти индексные файлы?
Предлагаю следующую общую структуру файла индекса, лежащего в корневой папке каждого хоста:
1. Заголовок (1 Б):
  - номер версии (для возможности адаптации под последующие изменения структуры индексного файла) - 1 Б
2. Данные по хосту (~ 17 - 34 Б):
  - имя - ~ 17 Б (взята средняя длина имени хоста по собственному кэшу)
  - ? размер папки в кэше (для целей реалтаймового подсчета размера кэша) - 4 Б (размер папки до 32 ГБ)
  - версия HTTP (для учета в случае возможной оптимизации запросов) - 1 Б
  - IP-адрес (для целей кэширования DNS) - 4 Б
  - время последнего обновления IP-адреса (для кэширования DNS) - 8 Б
3. Метаданные по файлам хоста (~ до 300 Б / файл):
  - имя без имени хоста - до 200 Б
  - код ответа сервера (для кэширования ответов 3xx и 4xx) - 1 Б
  - дата последнего доступа (для автоматической очистки кэша) - 8 Б
  - Last-Modified (для формирования If-Modified-Since) - 8 Б
  - Date (для проверки критерия свежести и предугадывания) - 8 Б
  - Expiration time - 8 Б
  - Content-Type, если формат НС не распознает самостоятельно либо распознает, но результат не совпадает с полем ответа. Еще лучше, имхо, сохранять все и исключить из НС код распознавания - ? Б
  - Content-Encoding, если кодировку НС не распознает самостоятельно либо распознает, но результат не совпадает с полем ответа. Опять же, лучше, имхо, сохранять все и исключить из НС код распознавания - ? Б
  - Cache-Control: no-cache (вместе с Pragma: no-cache), must-revalidate, мож еще какие директивы управления кэшем (для опционального обеспечения стандартного /как велит rfc2616/ поведения НС при желании пользователя) - 1 Б

Полям индексного файла можно присвоить уникальные однобайтовые идентификаторы, которые будут предварять начало каждого поля. Таким образом, при отсутствии соответствующих данных в ответе сервера либо нецелесообразности их сохранения можно будет смело не записывать их в индексный файл.

В процессе нахождения файла индекса в памяти к данным блока 3 можно добавлять тело файла (в случаях, когда сейчас файл считывается в RAM-кэш). Таким образом, индекс, на мой взгляд, способен заменить и DNS, и RAM-кэши.
Отдельно по поводу полноценности замены DNS-кэша. Если мы ни один файл из хоста не пишем в кэш или удаляем всю папку хоста из кэша, то отказываемся от экономии и, вероятно, не планируем туда возвращаться. Зачем тогда держать запись DNS для такого хоста? По-моему, хранение DNS в индексе все-таки оправдано. Как минимум тем, что все рядом, а также не надо хранить в памяти параллельную структуру с повторением в ней имен хостов.
Еще вопрос - в качестве имени хоста и файла хранить:
  - имя до преобразования URL2File?
  - преобразованное имя?
  - то и другое?
« Последнее редактирование: 19 марта 2007, 15:10:09 от Михаил » Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #59 : 19 марта 2007, 16:16:57 »

К блоку 3 необходимо также добавить:
  - Location (для кэширования ответов 3хх) - ? Б
Сообщить модератору   Записан
Страниц: 1 2 [3] 4 5 6   Вверх
  Отправить эту тему    Печать  

 
Перейти в: