2014-12-09 3 views
0

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

Мы скоро опубликуем новый сайт в Интернете, поэтому я подозреваю, что это изменение заставит браузер получить обновление ... Я прав, на этом?

Но для предотвращения жалоб прошлого я хотел бы лучше контролировать кеширование браузера пользователя.

Лучше всего поставить время кеширования (между днем ​​и одной или двумя неделями) на страницу, потому что для общего кэширования информации это хорошо, потому что он не обновляется, что часто, и это не так столь же чувствительный к времени, как наш календарь! Но я хочу новую версию календаря в течение дня с момента последнего посещения. -> Я бы даже подумал о том, чтобы кешировать части страниц, если возможно (верхний и нижний колонтитулы с меньшей вероятностью меняют тогда содержимое и т. Д.)

Какой лучший подход? Должен ли я что-то изменить на настройках сервера (насколько это позволяет хостинг) и как я могу это сделать (хостинг панели управления, php.ini)?

Или мне нужно что-то делать на PHP? Или в HTML как я нашел здесь: HTML Cache control

Или, может быть, комбинация некоторых/всех вышеперечисленных?

+0

Html решения сделать работу (это зависит от браузера). Я не знаю о серверной системе без кеша, но, возможно, они могут помочь. (Но ничего не идеального) –

ответ

3

Вы можете сделать это с PHP или HTML

PHP

<?php 

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 
?> 

HTML

<meta http-equiv="expires" content="Day, 01 Mon 2014 00:00:00 GMT"/> 
<meta http-equiv="pragma" content="no-cache" /> 

убедитесь в том, что в основной включают е ile для php или html, чтобы сделать это для всех страниц. Я бы использовал заголовок php поверх html.

+0

Все страницы должны быть кэшированы. Календари только на период 1 день, таблицу цен в неделю и некоторые общие информационные страницы 2 недели на месяц. Возможно ли это различие и продолжительность времени с использованием PHP и/или HTML? – cowgirl

+0

вы можете использовать заголовок («Истекает: сб, дд июль» 05:00:00 GMT ») в php или в html. отрегулируйте время истечения срока/времени и поместите его на страницы, которые нуждаются в нем. – unixmiah

0

Вы можете достичь этого .htaccess:

<filesMatch "\.(php|html|htm|js|css)$"> 
    FileETag None 
    <ifModule mod_headers.c> 
    Header unset ETag 
    Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" 
    Header set Pragma "no-cache" 
    Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" 
    </ifModule> 
</filesMatch> 

Это истекает кэш сервера и каждый запрос будет получать новые страницы

+0

Все страницы должны быть кэшированы. Календари только на период 1 день, таблицу цен в неделю и некоторые общие информационные страницы 2 недели на месяц. Возможно ли это различие и продолжительность времени с использованием .htaccess? – cowgirl

+0

Насколько я понимаю ваш код, вы фильтруете расширение, но я не делаю расширений, так как я использую маршрутизацию, создавая приятные дружественные URL-адреса SEO ... – cowgirl

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