Лучший способ разрешить и контролировать кеш

YSlow

Я тестировал некоторые из своих веб-сайтов с помощью YSlow от Yahoo и заметил следующий комментарий:

Specify an expiration at least one week in the future for the following resources

< br /> Мой файл .htacces содержит следующий код:

ExpiresActive On
ExpiresDefault "access plus 1 day"

Это лучший способ сделать это? И почему YSlow советует вам установить кеш хотя бы на одну неделю?


person Michiel Pater    schedule 02.03.2011    source источник
comment
Возможно, вы захотите взглянуть на проект HTML5 Boilerplate, в котором есть довольно хорошо прокомментированный файл .htaccess, который включает директивы, связанные с кэшем github.com/paulirish/html5-boilerplate/blob/master/.htaccess   -  person akamike    schedule 02.03.2011


Ответы (1)


Почему YSlow советует вам установить кеш хотя бы на одну неделю?

Потому что они считают (и это неплохая идея), что одного дня недостаточно: если у вас есть какой-то пользователь, который заходит на ваш сайт только пару раз в неделю, кеш на 1 день ему не пригодится.

Вместо этого основная идея состоит в том, чтобы кэшировать навсегда -- и изменять URL-адрес (обычно меняя имя файла) при изменении файла, чтобы принудительно просмотреть скачать новую версию.

person Pascal MARTIN    schedule 02.03.2011
comment
...и хотя браузеры должны понимать часовые пояса, многие из них не понимают - person symcbean; 02.03.2011
comment
@Pascal: Спасибо за ответ! Что, если я предпочитаю не менять имя файла каждый раз, когда редактирую файл? Будет ли хорошей идеей использовать ETag? Или они не надежны? - person Michiel Pater; 02.03.2011
comment
Насколько я помню, электронные метки не всегда являются лучшим решением (особенно когда у вас более одного сервера) ;; кэширование файла навсегда и изменение его имени на самом деле лучшее решение, которое я знаю - конечно, вам нужно найти способ автоматизировать это ;-) - person Pascal MARTIN; 02.03.2011
comment
@Pascal: Спасибо. Какие файлы будут кэшироваться? HTML, CSS, JS и изображения? И как установить кеш навсегда? - person Michiel Pater; 02.03.2011
comment
Обычно я кэширую статические файлы: CSS, JS и изображения. навсегда ? Что ж, год намного длиннее, чем вечность, когда дело доходит до Интернета ;-) - person Pascal MARTIN; 02.03.2011
comment
Обычно я использую какой-то код очистки кеша, поэтому мне не нужно каждый раз менять имя файла. Что-то вроде js.js?v=<?php echo filemtime('js.js'); ?> - person Thai; 02.03.2011
comment
@Thai: Это действительно быстрее? Потому что вам нужно будет вызывать функцию каждый раз, когда вы загружаете веб-сайт. - person Michiel Pater; 02.03.2011
comment
@Michiel На самом деле у меня есть сценарий развертывания, который обновляет index.html с правильными временными метками, поэтому мне никогда не приходится беспокоиться о производительности. :) - person Thai; 02.03.2011
comment
@Thai: Это потрясающе! У меня есть еще один вопрос. Вы бы порекомендовали также использовать ETags? Пожалуйста, взгляните на мой новый вопрос: stackoverflow.com/ вопросы/5180135/ - person Michiel Pater; 03.03.2011