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

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

Сообщений: 326


« : 07 мая 2013, 13:58:59 »

Доброго времени суток. Извините, если подобное уже обсуждалось на форуме, не смог найти. Имеется несколько вопросов по gzip сжатию в НС.
1. По умолчанию в настройках НС не включены опции "Добивать Accept-Encoding:gzip,deflate при загрузке из монитора" и "при загрузке из браузера".
Правильно ли я понимаю, что при таких настройках gzip будет зависеть от браузера, т.е. если браузер попросит у сервера сжатый файл и если сервер поддерживает такую возможность, то он отправит его в gzip и НС сохранит в кэше этот файл в сжатом виде и передаст его таким браузеру, а браузер уже сам его распакует?
2. Если включить опцию "Добивать Accept-Encoding:gzip,deflate при загрузке из браузера", то НС каждый раз будет пытаться запросить у сервера сжатый файл, не зависимо от того как его запросил браузер? Если это так, то тогда еще вопрос:
   Браузер запросил НЕ сжатый файл, а НС послал запрос серверу gzip. Сервер отправил gzip файл, НС его сжатым сохранит в кэше. В каком виде НС передаст этот файл браузеру, в распакованном или в сжатом? Т.е. если в кэше НС лежит gzip файл, а браузер запрашивает этот файл в НЕ сжатом виде, кто будет распаковывать этот файл?
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #1 : 07 мая 2013, 23:13:20 »

Цитировать
Правильно ли я понимаю, что при таких настройках gzip будет зависеть от браузера, т.е. если браузер попросит у сервера сжатый файл и если сервер поддерживает такую возможность, то он отправит его в gzip и НС сохранит в кэше этот файл в сжатом виде и передаст его таким браузеру, а браузер уже сам его распакует?
Правильно. Правда НС еще может распаковать файл, если есть расширение, которое обрабатывает данные на лету (например, СМ).
Цитировать
Т.е. если в кэше НС лежит gzip файл, а браузер запрашивает этот файл в НЕ сжатом виде, кто будет распаковывать этот файл?
НС будет распаковывать. Браузер получит то, что он просил.
Сообщить модератору   Записан
zakoul
Старожил
****

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

Сообщений: 326


« Ответ #2 : 07 мая 2013, 23:29:51 »

А если ситуация наоборот, в кэше НС лежит не сжатый файл, а браузер его запросит в сжатом виде. НС его сожмёт и отдаст браузеру в сжатом виде?

Правда НС еще может распаковать файл, если есть расширение, которое обрабатывает данные на лету (например, СМ).
СМ имеется. Но после распаковки, в кэш он его положит сжатым, если с сервера пришел сжатый файл?

Верно ли, что не важно в каком виде лежит файл в кэше НС (сжатый или нет), браузер(клиент) получит его в таком виде, в котором он его запросил? Т.е. НС будет сам распаковывать/сжимать файлы из кэша, в зависимости от того, в каком виде его запросили и в каком виде файл лежит в кэше НС?

НС будет распаковывать. Браузер получит то, что он просил.
Почему то у меня при таком варианте возникают проблемы, только не с браузером, а назовем его скажем, клиентом.
« Последнее редактирование: 08 мая 2013, 01:03:06 от zakoul » Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #3 : 08 мая 2013, 01:00:15 »

Цитировать
СМ имеется. Но после распаковки, в кэш он его положит сжатым, если с сервера пришел сжатый файл?
Обрабатываются только те данные, которые отдаются клиенту. В кэше данные хранятся в исходном виде.
Цитировать
Верно ли, что не важно в каком виде лежит файл в кэше НС (сжатый или нет), браузер(клиент) получит его в таком виде, в котором он его запросил?
Браузер не может заставить сервер отдать ему данные в сжатом виде. Он может только сообщить, что может принять данные в сжатом виде. Сервер уже решает в каком виде отдавать данные. Поэтому НС не сжимает данные, если они у него в кэше не сжатые. Если данные сжатые и клиент сообщает, что не может принимать сжатые данные, то НС эти данные распаковывает.
Сообщить модератору   Записан
zakoul
Старожил
****

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

Сообщений: 326


« Ответ #4 : 08 мая 2013, 01:21:14 »

Браузер не может заставить сервер отдать ему данные в сжатом виде. Он может только сообщить, что может принять данные в сжатом виде.
А возможно ли как то посмотреть, с каким запросом обратился браузер/клиент к НС и в каком виде выдал ему файл из кэша НС?
Сообщить модератору   Записан
zakoul
Старожил
****

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

Сообщений: 326


« Ответ #5 : 08 мая 2013, 03:38:11 »

Вот пример, клиент не посылает запрос на сжатие (возможно я ошибаюсь, я не спец в этих делах, делаю выводы из анализа других логов. Тут отсутствует Accept-Encoding: gzip, deflate от клиента), почему НС отдает файл из кэша сжатым (Content-Encoding: gzip в ответе от НС)?

Цитировать
08.05.13 05:20:02,934 # 60/303 >>> URL: http://s.tankionline.com/crossdomain.xml
noReqDo:
GET http://s.tankionline.com/crossdomain.xml HTTP/1.1
Accept: text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, text/css, image/png, image/jpeg, image/gif;q=0.8, application/x-shockwave-flash, video/mp4;q=0.9, flv-application/octet-stream;q=0.8, video/x-flv;q=0.7, audio/mp4, application/futuresplash, */*;q=0.5
x-flash-version: 11,7,700,169
User-Agent: Shockwave Flash
Host: s.tankionline.com

08.05.13 05:20:02,935 # 60 <<< URL: http://s.tankionline.com/crossdomain.xml
HTTP/1.1 200 OK
Server: HandyCache/Version 1.00 RC3 (1.0.0.436)
Content-Length: 83
Connection: Keep-alive
Last-Modified: Tue, 07 May 2013 23:03:28 GMT
Content-Type: text/xml
Content-Encoding: gzip
« Последнее редактирование: 08 мая 2013, 05:24:17 от zakoul » Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #6 : 08 мая 2013, 14:42:05 »

Вы взяли заголовки из лога НС, там заголовок ответа промежуточный, ответ еще не окончательно сформирован.
Вот лог обмена, снятый внешней программой
Код:
GET http://s.tankionline.com/crossdomain.xml HTTP/1.1
Accept: text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, text/css, image/png, image/jpeg, image/gif;q=0.8, application/x-shockwave-flash, video/mp4;q=0.9, flv-application/octet-stream;q=0.8, video/x-flv;q=0.7, audio/mp4, application/futuresplash, */*;q=0.5
x-flash-version: 11,7,700,169
User-Agent: Shockwave Flash
Host: s.tankionline.com
Pragma: no-cache

HTTP/1.1 200 OK
Server: HandyCache/Version 1.00 RC3 (1.0.0.438)
Connection: Keep-alive
Last-Modified: Wed, 08 May 2013 10:05:26 GMT
Expires: Thu, 08 May 2014 10:30:06 GMT
Content-Type: text/xml
Transfer-Encoding: chunked

5B
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>
0

Сообщить модератору   Записан
zakoul
Старожил
****

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

Сообщений: 326


« Ответ #7 : 08 мая 2013, 15:06:40 »

Вы взяли заголовки из лога НС, там заголовок ответа промежуточный, ответ еще не окончательно сформирован.
Вот лог обмена, снятый внешней программой
Не могли бы поделиться опытом, какой прогой снимать логи?
Судя по этому логу Content-Encoding: gzip в ответе отсутствует, значит НС передал клиенту файл не сжатым? И еще, если не затруднит, что значит Transfer-Encoding: chunked ?

P.S. mai62, я Вам писал недавно с просьбой о помощи. В принципе, проблему удалось решить, включив в НС опцию "Распаковывать gzip/deflate файлы перед записью в кэш", но хранить распакованный кэш, при том что все должно работать с gzip и НС сам по необходимости должен распаковывать сжатые файла из кэша. Вот и хочется найти в чем же тут дело, почему не работает должным образом.
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #8 : 08 мая 2013, 18:16:19 »

Цитировать
Не могли бы поделиться опытом, какой прогой снимать логи?
Попробуйте HTTPAnalyzer, она неплохая и более доступная. Лучшей в этом деле на мой взгляд является CommView.
Цитировать
Судя по этому логу Content-Encoding: gzip в ответе отсутствует, значит НС передал клиенту файл не сжатым?
Да
Цитировать
что значит Transfer-Encoding: chunked ?
Это стандартная технология, лучше у Яндекса спросите
Сообщить модератору   Записан
zakoul
Старожил
****

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

Сообщений: 326


« Ответ #9 : 09 мая 2013, 00:26:48 »

Цитировать
5B
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>
0
А что за строки 5В и 0? Они появляются только когда НС распаковывает сжатый файл из своего кэша.
Если он распаковывает его на лету (такого файла нет в кэше, с сервера пришел gzip, НС распаковывает его для клиента и отдает), то этих строк нету.

PS. Пример конкретно для http://s.tankionline.com/crossdomain.xml На других файлах не проверял.
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #10 : 09 мая 2013, 11:42:29 »

Про Transfer-Encoding: chunked прочитайте.
Сообщить модератору   Записан
zakoul
Старожил
****

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

Сообщений: 326


« Ответ #11 : 09 мая 2013, 16:43:35 »

mai62, большое спасибо за ответы.
В ходе анализа через HTTP Analyzer могу предположить почему возникают ошибки:
1. При отдаче файла из кэша НС не указывает "Date". (В некоторых клиентах для некоторых файлов этот параметр возможно имеет значение)
2. Если НС распаковывает из своего кэша сжатый файл для клиента, то в ответе нет ни чего, кроме самого содержимого файла.

Примеры (файл s.tankionline.com/crossdomain.xml):
Ответ НС при отсутствии файла в кэше:
Код:
HTTP/1.1 200 OK
Server: nginx/1.2.6
Date: Thu, 09 May 2013 11:13:59 GMT
Content-Type: text/xml
Last-Modified: Thu, 25 Mar 2010 15:10:00 GMT
Connection: keep-alive
Transfer-Encoding: chunked

5b
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>
0

Ответ НС несжатого файла из кэша
(отсутствует "Date"):
Код:
HTTP/1.1 200 OK
Server: HandyCache/Version 1.00 RC3 (1.0.0.436)
Content-Length: 91
Connection: Keep-alive
Last-Modified: Thu, 09 May 2013 11:13:58 GMT

<cross-domain-policy>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>

Ответ распакованного НС сжатого файла из кэша
(нет ни чего, кроме самого файла):
Код:
5B
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>
0
« Последнее редактирование: 09 мая 2013, 17:46:06 от zakoul » Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #12 : 09 мая 2013, 18:51:38 »

Цитировать
1. При отдаче файла из кэша НС не указывает "Date".
Это не важно.
Цитировать
2. Если НС распаковывает из своего кэша сжатый файл для клиента, то в ответе нет ни чего, кроме самого содержимого файла.
К сожалению HTTP Analyzer нельзя доверять на 100%. Иногда он теряет часть обмена, может смешать несколько запросов в один. Если бы в НС была такая ошибка, она давно была бы обнаружена. Я Вам показывал в своем сообщении выше лог такой ситуации, все там есть, что должно быть.
Сообщить модератору   Записан
zakoul
Старожил
****

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

Сообщений: 326


« Ответ #13 : 09 мая 2013, 20:59:52 »

К сожалению HTTP Analyzer нельзя доверять на 100%. Иногда он теряет часть обмена, может смешать несколько запросов в один.
А кому тогда можно доверять на 100%?
Просто когда HTTP Analyzer показывает такое (якобы он потерял часть)
Цитировать
5B
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>
0
Клиент выдает ошибку и после этого файла ни чего не запрашивает (можно предположить что файл клиенту из кэша НС пришел не совсем тот). Совпадение? При чем HTTP Analyzer "теряет" именно когда НС отдает клиенту (не поддерживающему gzip) распакованный сжатый фал из кэша.
И еще повторюсь, если включить "Распаковывать gzip/deflate файлы перед записью в кэш" то файлы до клиента доходят нормальными (и HTTP Analyzer ни чего не теряет) . Единственное при таком варианте, клиент зависает на некоторых .xml файлах. (возможно из-за отсутствия "Date" или "Content-Type" потому как других отличий вроде нет)

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

PS. mai62, если готовы помочь, то давайте с Вами выполним одни и те же небольшие действия (когда у Вас будет время) и сравним результаты? Для этого нужно иметь Standalone FlashPlayer, даже регистрироваться в игре не нужно, только начальная загрузка. Ну или может кто то другой готов помочь?
« Последнее редактирование: 09 мая 2013, 21:51:10 от zakoul » Сообщить модератору   Записан
zakoul
Старожил
****

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

Сообщений: 326


« Ответ #14 : 11 мая 2013, 00:21:21 »

Отключил "gzip,deflate" в Firefox (очистка network.http.accept-encoding в about:config). В настройках НС включено "Добавить Accept-Encoding:gzip,deflate при загрузке из браузера" и отключено "Распаковывать gzip/deflate файлы перед записью в кэш". Запись к кэш только для "s\.tankionline\.com/"
Захожу на http://tankionline.com/battle-ru2.html (достаточно загрузить в кэш НС один gzip файл "s.tankionline.com/js/swfobject.js")
Очищаю кэш Firefox и опять захожу туда же. Теперь НС распаковывает "s.tankionline.com/js/swfobject.js" из своего кэша и Firefox на этом зависает.
HTTP Analizer выдает:


В чем может быть проблема?
Когда в FF включено gzip, то пролем нет, т.к. НС выдает из кэша gzip файл.
Такое происходит только когда НС распаковывает сжатый файл из своего кэша. Если файла в кэше нет, то в браузер приходит нормально распакованный файл.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #15 : 11 мая 2013, 02:05:02 »

Похоже на баг НС. Сведения о длине чанка остаются в теле ответа.
Сообщить модератору   Записан
zakoul
Старожил
****

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

Сообщений: 326


« Ответ #16 : 11 мая 2013, 02:30:52 »

Михаил, я не совсем понял о чем Вы спросили, т.к. использую НС недавно и подробности HTTP не знаю. Но если Вы имели ввиду то, что я спрашивал чуть выше (http://handycache.ru/component/option,com_smf/Itemid,10/topic,6397.msg39910/#msg39910) - то да, при распаковке сжатого файла из кэша, в ответе указана длинна, содержимое файла, и 0-конец. Больше там ни чего нет.


Возможно настройки моей системы как то на это влияют (отключены некоторые службы), если такое проявляется только у меня?
(НС скачал архивом, распаковал в "C:\Users\username\AppData\Roaming\HahdyCache". До этого НС не устанавливался)
« Последнее редактирование: 11 мая 2013, 02:56:46 от zakoul » Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #17 : 11 мая 2013, 02:57:01 »

zakoul
У Вас выключен RamCache? Попробуйте включить.
Сообщить модератору   Записан
zakoul
Старожил
****

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

Сообщений: 326


« Ответ #18 : 11 мая 2013, 03:05:31 »

zakoul
У Вас выключен RamCache? Попробуйте включить.
RamCache отключен. Но что с ним, что без него такое происходит.
« Последнее редактирование: 11 мая 2013, 03:13:48 от zakoul » Сообщить модератору   Записан
Линда Кайе
Новичок
*

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

Сообщений: 28



WWW
« Ответ #19 : 31 октября 2013, 10:14:54 »

Прошу прощения, если не туда, но имеется странная ситуация. Включено добавление #.gz к сжатым файлам в кэше. HC такой файл находит при запросе клиента, тоесть он "знает", что это сжатый файл. Но отдаёт его как есть даже при том, что клиент не просит сжатые данные (на самом деле данные - картинка). Так и должно быть?

Дополнение. Оказалось, что в конце gz файла есть какие-то данные с заголовками, которые HC добавляет в HTTP заголовок ответа (но в рассматриваемых файлах они отсутствуют). Где можно изучить формат этого блока?
« Последнее редактирование: 31 октября 2013, 10:54:07 от Линда Кайе » Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #20 : 31 октября 2013, 15:49:53 »

Зачем Вам формат этого блока?
Когда Вы делаете какие-то выводы, пожалуйста, пишите на основании чего Вы их получили. Иначе я не могу проверить то, что Вы пишете и как-то отреагировать на Ваше сообщение.
Сообщить модератору   Записан
Линда Кайе
Новичок
*

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

Сообщений: 28



WWW
« Ответ #21 : 31 октября 2013, 20:15:21 »

Зачем Вам формат этого блока?

Для маскировки. Хочу ручками пажать определённые файлы в кэше чтобы не светились.

Когда Вы делаете какие-то выводы, пожалуйста, пишите на основании чего Вы их получили. Иначе я не могу проверить то, что Вы пишете и как-то отреагировать на Ваше сообщение.

Прошу прощения. Первая часть была чисто теоретической. Файл был сжат ручками и помещён в кэш, у него было специальное расширение (blah#.gz, например), но HC отдавал его не как сжатый. Потом я заметила два заголовка в конце gzip файла созданного самим HC. Заодно поняла, почему архиватор (gzip32.exe) ругался на "мусор" в конце архива. Методом тыка и hex редактором я добавила данные заголовки в конец созданного самостоятельно gz файла, и HC отдал его с нужными заголовками, но хотелось бы уверенность, что этот специальный блок указан правильно.

Короче, сначала я думала, что в HC глюк, а потом поняла, как работает HC со сжатыми файлами в кэше, поэтому вопрос относительно этой самой работы снимается.
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #22 : 31 октября 2013, 21:06:45 »

Формат блока такой:
Код:
Content-Type: xxxxxxxxxxNContent-Encoding: xxxxxxxxxxxN0

Символы N - байт с длиной строки, за которой находится символ.
0 - в конце - байт 0.
Сообщить модератору   Записан
Линда Кайе
Новичок
*

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

Сообщений: 28



WWW
« Ответ #23 : 01 ноября 2013, 03:30:46 »

Спасибо! ^^
Сообщить модератору   Записан
Страниц: 1 2 [Все]   Вверх
  Отправить эту тему    Печать  

 
Перейти в: