2015-09-25 1 views
0

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

В настоящее время мой .htaccess файл выглядит следующим образом:

<IfModule mod_expires.c> 
# Enable expirations 
ExpiresActive On 
# Default directive 
ExpiresDefault "access plus 1 month" 
# My favicon 
ExpiresByType image/x-icon "access plus 1 year" 
# Images 
ExpiresByType image/gif "access plus 1 month" 
ExpiresByType image/png "access plus 1 month" 
ExpiresByType image/jpg "access plus 1 month" 
ExpiresByType image/jpeg "access plus 1 month" 
# CSS 
ExpiresByType text/css "access plus 1 month" 
# Javascript 
ExpiresByType application/javascript "access plus 1 year" 
</IfModule> 

ответ

0

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

Предположим, что вы предвидя ваши CSS файлы, которые будут изменены каждый день, то вы можете использовать ExpiresByType text/css "modification plus 1 day", то это то, что произойдет (учитывая, что вы загрузили CSS файлы на 25-09-2015, 23:55):

  • Клиент получает доступ к вашей странице на 25-09-2015, 23:56 и загружает все файлы CSS. Теперь, поскольку Apache отправляет последнее измененное время в заголовок ответа, поэтому клиент, безусловно, получит Last-Modified:Fri, 25 Sep 2015 23:55:00 GMT, и поскольку вы используете директиву ExpiresByType с базой «модификации», поэтому Apache рассчитает свое время истечения как -> [последнее измененное время (время, когда ресурс последний раз был изменен на сервере, в этом случае это будет 25 сентября 2015 г. 23:55) + время, указанное с базой «модификации» (в этом случае, 1 день)], поэтому срок годности будет рассчитываться как 26 Sep 2015 23:55 и поэтому Apache отправит Expires: Sat, 26 Sep 2015 23:55:00 GMT. Таким образом, 2 кэша, связанные заголовки ответов Apache будет отправлять клиенту будет:

    Last-Modified:Fri, 25 Sep 2015 23:55:00 GMT 
    Expires: Sat, 26 Sep 2015 23:55:00 GMT 
    
  • Теперь, позволяет сказать, что клиент снова посещает страницу на 26 Sep 2015 03:55 тогда он будет видеть, что документ не истек, и, следовательно, будет использовать версию кэша документа. Это будет идти в соответствии с вашим ожиданием.

  • Теперь, скажем, клиент снова посещает страницу по адресу 26 Sep 2015 23:56, после чего он увидит, что документ истек, и, следовательно, он отправит запрос на сервер для нового документа.

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

Вы можете взглянуть на answer of this question, это очень хорошо.

Для ресурсов, которые вы не ожидаете часто изменять, вы можете продолжать использовать «доступ» в качестве базы, как вы уже правильно делаете для Favicon, которую нельзя ожидать в течение года.


К сожалению, Apache не может полностью решить эту цель - «Получить свежий документ с сервера, только если модифицированная версия доступна на сервере еще продолжать использовать кэшированные документ» потому, что пока запрос не отправляется на сервер, клиент не может действительно знаю, изменился ли документ или нет. Или технология PUSH должна быть реализована там, где сервер нажимает на нее какую-то информацию, а клиент действует.

Некоторые другая информация:
HTML5 предоставляет функцию под названием приложение-кэш/оффлайн-кэш, который позволяет в автономном режиме навигации, но it is regarded as broken and will be dis-continued. Вы можете посмотреть Service worker, если хотите, чтобы реализовать пользовательский автономный режим.

+0

Бад, нужна дополнительная информация или пояснения? – hagrawal

+0

Что бы вы посоветовали установить время истечения срока? –

+0

Все, что больше 24 часов, а затем основывается на вашем ожидании. Обычно '23: 59: 00' или' 05: 59: 00' могут быть выбраны для временной части. Я считаю, что вы на начальных этапах создания своего сайта, так что 24 часа могут быть хорошими .. – hagrawal

Смежные вопросы