Должен ли я удалить Etag для страниц HTML и PHP? - PullRequest
0 голосов
/ 23 апреля 2010

Я генерирую htm файлы динамически, используя php и .htaccess.Я где-то читал, что я должен удалить Etags для файлов типа text / html?Это верно?Мне интересно, если я использую etags и если я не изменяю контент, я мог бы сэкономить некоторую пропускную способность.Я был бы признателен, если бы вы, ребята, могли сказать мне, могу ли я использовать etags для htm-файлов.

Ответы [ 3 ]

0 голосов
/ 15 февраля 2013

Etags могут быть полезны для ускорения вашего сайта, даже с динамическим контентом (например, php-скриптами). Это особенно важно для мобильных соединений, поскольку скорость соединения ниже. Я использую заголовки ETag на некоторых мобильных веб-сайтах, таких как:

https://gist.github.com/oliworx/4951478

Подсказка: Вы не должны включать текущее время или другое часто меняющееся содержимое на странице, потому что это предотвращает его кэширование клиентом (браузером).

0 голосов
/ 13 апреля 2015

Удалить Etags, если это возможно

Лучший метод кэширования - это max-age. W3C обязывает браузеры использовать максимальный возраст, если он доступен.

Когда используется максимальный возраст, браузер будет использовать кэшированную версию и даже не запрашивать сервер.

Это также означает, что если вы заменяете ресурс на своей веб-странице (например, CSS, JS, IMG, ссылка), вам следует переименовать ресурс.

Следующий лучший метод кэширования - Expires.
На каждой странице PHP с echo неплохо всегда включать заголовок max-age.

header('Cache-Control: max-age=31536000');

Это также разумно, (Пример типа контента только для HTML)

header('Content-Type: text/html; charset=utf-8');
header('Connection: Keep-Alive');
header('Keep-Alive: timeout=50, max=100');

У eTag нет срока действия. Ресурс нужно проверять каждый раз.

Если вы используете max-age или Expires, браузер не будет отправлять HTTP-запрос на проверку ресурса.

Когда он включен с max-age и expires, он тратит пространство слушателя и тратит несколько циклов ЦП сервера для генерации или поиска значения eTag.

Проблема с eTag заключается в том, что если ресурс не очень велик, он будет мало полезен. В HTTP-запросе время, необходимое для передачи данных, часто минимально по сравнению с временем соединения и ожидания.

С eTag браузер все еще должен выполнить HTTP-запрос. Если eTag не изменился, тогда ответ 304.


Вот типичный HTTP-запрос:

Только 3 миллисекунды для загрузки 2.9KB
Время запроса 454 миллисекунды. + 58мс DNS (очень быстро)

enter image description here

DNS Lookup: 58 ms
Initial Connection: 192 ms
Time to First Byte: 262 ms
Content Download: 3 ms
Bytes In (downloaded): 2.9 KB

eTag сэкономит 3 миллисекунды.

Если ресурс был кэширован, он освободил бы соединение для другого ресурса в дополнение к экономии 400-500 мс.


Вот ответ 301 от Intel
441 мс

enter image description here

DNS Lookup: 103 ms
Initial Connection: 219 ms
Time to First Byte: 222 ms
Content Download: ms
Bytes In (downloaded): 0.1 KB
0 голосов
/ 23 апреля 2010

Насколько я знаю, Etag - это HTTP-заголовок, генерируемый HTTP-сервером, используемым системой кэширования.

Идея:

  • Вы просите stackoverflow.com изображение logo.png
  • stackoverflow.com ответит вам HTTP 304 (содержимое не изменено, etag: XXXXXX)
  • Ваш браузер перед повторным запросом изображения проверит кеш на ресурс с именем: logo.png, с сайта: stackoverflow, с etag: XXXXXXX
  • Если браузер его найдет, он загрузит изображение из кеша без загрузки
  • Если он не может его найти, он снова попросит веб-сервер загрузить его.

так ... для чего вы хотите использовать ETags?

Если вы хотите узнать больше о ETags, может быть интересно скачать HttpFox для firefox.

У Apache есть своя собственная система кеша, и она используется, когда вы загружаете или требуете какой-либо «статической» загрузки, такой как html-файлы и изображения.

Если вы хотите сделать это в динамическом контексте, вы должны реализовать это самостоятельно.

...