Предотвращение кэширования файлов CSS
Я разрабатываю простой веб-сайт с использованием PHP.
Конфигурация разработки: WAMP
Конфигурация производства: ЛАМПА
Во время тестирования я изменил свой файл CSS, но когда я перезагружаю страницу, мой браузер (не уверен) все еще использует старый кешированный css.
Я сделал несколько поисковых запросов и нашел разные решения, которые я уже пробовал
- Добавление запроса в конец css
css/main.css?78923
- Использование
Ctrl + R
(в Firefox) для принудительной выборки ресурса
- Отключение кеширования Firefox, а также использование надстройки
Clear Cache
Firefox.
Когда это не сработало, я сделал еще несколько поисковых запросов, где я столкнулся со страницей стека (здесь), где кто-то предположил, что Apache кэширует ресурсы. Итак, проблема не в Firefox, а на сервере. Парень также предложил решение, которое я не понял (я был новичком)
Мой вопрос состоит из двух частей:
- Верно ли, что Apache кэширует ресурсы? (Как проверить, действительно ли моя?)
- Как предотвратить его кеширование?
PS: копирование и вставка решения в стеке вопрос (тот, который у меня выше как ссылка) не работает: (
Ответы
Ответ 1
Я несколько раз сталкивался с этой проблемой и, как правило, сталкивался с проблемой на производственных сайтах, назвав мой css таким образом
<link rel="stylesheet" type="text/css" href="style.css?v=1" />
При развертывании обновления просто измените значение v=1
на v=2
, и это заставит всех ваших браузеров пользователей захватить новые таблицы стилей. Это будет работать и для файлов script. Если вы посмотрите источник на Google
, вы заметите, что они также используют этот подход.
Ответ 2
У меня была такая же проблема с моей системой LAMP dev, вызванной сетевым монтированием. Мне удалось избавиться от него, добавив эти две строки в мой apache conf.
EnableMMAP off
EnableSendfile off
Ответ 3
На моих php-страницах я обычно добавляю текущее время до конца вашего css href:
<link rel="stylesheet" type="text/css" href="style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>" />
Ссылка: Здесь
Ответ 4
Я знаю, что это старый вопрос, но я просто столкнулся с этим и имел некоторые из тех же проблем. Вот быстрый способ не хранить кеш в любом файле:
<link rel="stylesheet" href="css/style.css?<?=time()?>">
Использование помогает получать самую новую версию каждый раз, когда страница загружается.
Ответ 5
- Apache (-modules) может кэшировать ressources, но это не ваша текущая проблема.
- Либо отключите ваш браузер, перезагрузите кеш при перезагрузке или доставьте css с измененными заголовками. Вы можете написать script, который устанавливает заголовок expiry, чтобы ваш браузер должен был получить новую версию вашего css.
Во всяком случае, я не понимаю смысла в этом. Для разработки проще просто отключить ваш браузер или нажать Ctrl + r.
Ответ 6
Я всегда использую httcacheclean
, когда что-то изменяю в файлах активов (js, css и т.д.)