Эта тема на forum.dklab.ru


Дмитрий Котеров: Как полностью отключить кэш в браузере?
Это изменение исключит влияние браузерного кэша — ведь, тестируя сайт, вы постоянно что-то обновляете и смотрите, что получается. А браузер постоянно будет пытаться подсунуть вам не обновлённые страницы и картинки, а содержимое кэша.

Подключаем модуль в httpd.conf
LoadModule expires_module modules/mod_expires.so
Внимание: данный модуль содержится в пакете расширения с модулями Apache. Если он у Вас не установлен, зайдите сюда: http://dklab.ru/chicken/web/packages/apache.html.

Дописываем после строк подключения модулей следующее:
ExpiresActive On
ExpiresByType text/html "access plus 15 seconds"
ExpiresByType text/plain "access plus 15 seconds"
ExpiresByType image/gif "access plus 15 seconds"
ExpiresByType image/jpeg "access plus 15 seconds"
ExpiresByType application/x-javascript "access plus 15 seconds"
ExpiresByType text/css "access plus 15 seconds"
Если нужно, можно добавить еще несколько директив ExpiresByType.

Пример использования
В те времена, когда я не использовал mod_expires, произошла такая история. Сделал я динамическое меню (при наведении курсора мыши на пункт меню у меня одна картинка сменяется на другую). Запускаю сервер, загружаю страничку — все работает (при наведении курсора мышки картинка меняется). Но что я вижу? Картинка, на которую меняется (я ее, кстити, предварительно через JavaScript подгружаю), не совсем такая красивая, как бы хотелось. Запускаю PhotoShop, открываю эту самую картинку, исправляю ее и сохраняюсь. Делее переключаюсь в браузер, нажимаю F5 и проверяю (навожу курсор мыши на нужный пункт меню) — появляется по-прежнему старая картинка! Нажимаю Shift+F5 (или Shift+Reload), проверяю — тоже самое. Иду в настройки браузера и тру кэш. Теперь все работает, а значит, виноват кэш браузера, и даже Shift+Reload не помогает. Единственное, что может помочь — это mod_expires.
fmr:
Действительно, работает здорово! Если бы еще провайдеру это можно было поставить!
DmitRyazan: reload
Тоже попадался на обновлениях. Эмоции - такие же. (Особенно после часа "непоняток").
Сейчас стоит WinMe,IE6 SP(июнь2003) (Opera NN Mozila).
В IE не забываю поставить опцию - при каждом посещении страницы (Сервис\Свойства\Параметры\Временные файлы интернета), когда работаю локально.
Всё Ok! Да! Кнопку "обновить" надо всё же нажимать ;-)
Андрей Ильин: ExpiresDefault вместо ExpiresByType?

ExpiresByType text/css "access plus 15 seconds"
Если нужно, можно добавить еще несколько директив ExpiresByType.

Вроде бы напрашивается использование одной команды ExpiresDefault вместо нескольких ExpiresByType. Ведь наша задача - отключить кэширование всех файлов?
Nimous:
Интересно, а нельзя ли mod_expires через .htaccess управлять?
Филипп Паршин:
Прошу помогите разобраться
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
##LoadModule mime_magic_module modules/mod_mime_magic.so # по нашим тестам, данный модуль конфликтует с SSI.
#LoadModule status_module modules/mod_status.so
#LoadModule info_module modules/mod_info.so
#LoadModule speling_module modules/mod_speling.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule anon_auth_module modules/mod_auth_anon.so
#LoadModule dbm_auth_module modules/mod_auth_dbm.so
#LoadModule digest_auth_module modules/mod_auth_digest.so
#LoadModule digest_module modules/mod_digest.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule cern_meta_module modules/mod_cern_meta.so


LoadModule expires_module modules/mod_expires.so
ExpiresActive On
ExpiresDefault
#ExpiresByType text/html "access plus 15 seconds"
#ExpiresByType text/plain "access plus 15 seconds"
#ExpiresByType image/gif "access plus 15 seconds"
#ExpiresByType image/jpeg "access plus 15 seconds"
#ExpiresByType application/x-javascript "access plus 15 seconds"
#ExpiresByType text/css "access plus 15 seconds"



#LoadModule headers_module modules/mod_headers.so
#LoadModule usertrack_module modules/mod_usertrack.so
##LoadModule unique_id_module modules/mod_unique_id.so # по нашим тестам, сильно замедляет работу
LoadModule php4_module "/usr/local/php/sapi/php4apache.dll"

и все равно по барабану на основной странице произвожу удаление строки после выполнения php-скрипта на основной странице таже строка
NoN:
А header("Cache-control: no-cache"); header("Pragma: no-cache"); не всегда помогает? У меня не было проблем ещё.
Zett:
NoN
Не всегда. Например, когда используете поп-ап окна типа showModalDialog или showModlessDialog (они очень жестко кешируются, помогает только mod_expires)
Горбаров Илья: Для параноиков :

header("Expires: Mon, 23 May 1995 02:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cach-Control: no-cache, must-revalidate");
header("Pragma: no-cache");


Так, если уж на то пошло учитываем все версии протоколов
Но это почти всегда избыточно...
Zett:
Горбаров Илья

Код (php): скопировать код в буфер обмена
header("Expires: Mon, 23 May 1995 02:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cach-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
Так, если уж на то пошло учитываем все версии протоколов
Но это почти всегда избыточно...

Прежде чем умничать прочитайте предыдущий пост перед вашим: не всегда этого достаточно. Еще приходится использовать mod_expires...
Томазов:
где можно скачать файл mod_expires.so для Денвера 3
по ссылке http://www.denwer.ru/packages/apache.html выдает 404 ошибку при переходе на закачку
Гость_Валера:
где можно скачать файл mod_expires.so для Денвера 3
по ссылке http://www.denwer.ru/packages/apache.html выдает 404 ошибку при переходе на закачку


Вот прямая ссылка http://www.denwer.ru/dis/Apache/latest
Господа, если эти модули не установить, а в файле строчки раскомментировать, то работать ничего не будет. Вообще:)
Так что, если вы уже файлик изменили, то либо отмените изменение, либо скачайте по вышеуказанной ссылке файлик, установите его, перезапустите сервер и все будет отлично работать.

P.S.
Отдельное спасибо создателям Денвера. Лучше просто нет!

P.P.S.
Хотелось бы еще обратить внимание на следующую штуку.. Если не в тему, можете удалить, но примите, пожалуйста меры (например поместите в FAQ)...
Я установил Денвер (а до этого года 3 про ПХП вообще не вспоминал), стал запускать старые свои скрипты - половина не работает. Целый день я искал решение проблемы. А дело в том, что в ПХП, начиная с PHP 4.2.0, значение директивы register_globals по умолчанию установлено в off (отключено). А это, как я понял, огромное изменение в PHP.
В интернете много криков помощи по этому поводу:)
Чтобы все было нормально, надо либо брать переменные из массивов $_GEТ | $_POST , либо использовать .htaccess. В нем надо добавить строчку: php_flag register_globals on.

Уважаемые разработчики, дабы облегчить жизнь начинающим ПХП`шникам, будьте любезны как-нибудь этот вопрос утрясти:)

Эта тема на forum.dklab.ru