У меня есть php-сайт, работающий на облачном сервере. Когда я добавляю новые файлы css, js или изображения, браузер загружает те же старые файлы js, css и изображений, хранящиеся в кеше.
На моем сайте есть doctype и метатег, как показано ниже.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Page-Enter" content="blendTrans(Duration=1.0)">
<meta http-equiv="Page-Exit" content="blendTrans(Duration=1.0)">
<meta http-equiv="Site-Enter" content="blendTrans(Duration=1.0)">
<meta http-equiv="Site-Exit" content="blendTrans(Duration=1.0)">
Из-за приведенного выше типа документа и метакода я загружаю те же файлы, кешированные в браузере, вместо новых
php
http-headers
browser-cache
cache-control
ArrayOutOfBound
источник
источник
No Cache in all Browsers
, Вы также можете сделать? RandomGeneratedNumber для файлов, которые не хотите кэшировать.Ответы:
попробуй это
источник
session_start()
позже, он перезапишет ваш заголовок,Cache-Control: private, max-age=10800, pre-check=10800
потому что 180 минут является значением по умолчаниюsession.cache_expire
. Если не удается избежать запуска сеанса, но необходимо отключить использование кешаsession_cache_limiter('private');session_cache_expire(0);
.header
функции - это логическое значение для замены . Необязательный параметр replace указывает, должен ли заголовок заменить предыдущий аналогичный заголовок или добавить второй заголовок того же типа.Здесь, если вы хотите управлять им через HTML: сделайте как показано ниже Вариант 1:
И если вы хотите управлять им через PHP: сделайте это, как показано ниже Вариант 2:
И вариант 2 ВСЕГДА ЛУЧШЕ, чтобы избежать проблем с кешированием на основе прокси.
источник
Вы можете попробовать это:
Надеюсь, это поможет предотвратить кеширование, если таковое имеется!
источник
У меня возникла проблема с кешированием моих файлов css. Установка заголовков в PHP мне не помогла (возможно, потому, что заголовки нужно было установить в файле таблицы стилей вместо ссылки на страницу?).
Я нашел решение на этой странице: https://css-tricks.com/can-we-prevent-css-caching/
Решение:
Добавьте отметку времени в качестве части запроса URI для связанного файла.
(Может использоваться для css, js, изображений и т. Д.)
Для разработки:
<link rel="stylesheet" href="style.css?<?php echo date('Y-m-d_H:i:s'); ?>">
Для продакшена (где кеширование в основном хорошо):
<link rel="stylesheet" type="text/css" href="style.css?version=3.2">
(и при необходимости переписать вручную)
Или сочетание этих двух:
РЕДАКТИРОВАТЬ:
Или более красивое сочетание этих двух:
источник
Предотвращение кеширования браузера - не лучшая идея в зависимости от ситуации. В поисках решения я нашел такие решения:
проблема здесь в том, что если файл перезаписывается во время обновления на сервере, что является моим сценарием, кеш игнорируется, поскольку временная метка изменяется, даже если содержимое файла остается прежним.
Я использую это решение, чтобы заставить браузер загружать ресурсы только в том случае, если его содержимое изменено:
источник
stat
звонок. Без кеша файловой системы, 16нс, вершины? С кешем надежно <8 нс. Наносекунд. А в моей системе MD5 может обрабатывать 754 МБ / с без мигания. (openssl speed md5
) В совокупности файл CSS размером 100 КБ будет иметь комбинированные дополнительные накладные расходы… 129 мкс (микросекунд, 0,1295 мс) + 8 нс (что не влияет на окончательное число) = 129 мкс.hash_file('md5', $deployment_counter)
илиhash_file('md5', $cache_clear_counter)
первые, что приходят в голову.