Предотвращение кэширования файлов 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 и т.д.)