Как предотвратить кеширование браузера для php-сайта

У меня есть 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)"> 

Из-за вышеперечисленного doctype и мета-кода я загружаю те же файлы, кешированные в браузере вместо нового

попробуй это

 <?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: сделайте так, как показано ниже. Вариант 1:

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

И если вы хотите контролировать его через PHP: сделайте это, как показано ниже. Вариант 2:

 header('Expires: Sun, 01 Jan 2014 00:00:00 GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', FALSE); header('Pragma: no-cache'); 

И вариант 2 ВСЕГДА ЛУЧШЕ, чтобы избежать проблемы кэширования на основе прокси.

Вы можете попробовать следующее:

  header("Expires: Tue, 03 Jul 2001 06:00:00 GMT"); header("Last-Modified: " . gmdate("D, d MYH:i:s") . " GMT"); 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"); header("Connection: close"); 

Надеюсь, это поможет предотвратить кэш, если он есть!

У меня была проблема с кэшированием моих файлов css. Настройка заголовков на PHP не помогла мне (возможно, потому, что заголовки должны быть установлены в файле таблицы стилей вместо ссылки на нее?).

Я нашел решение на этой странице: https://css-tricks.com/can-we-prevent-css-caching/

Решение:

Добавить временную метку в качестве части запроса URI для связанного файла.
(Может использоваться для css, js, изображений и т. Д.)

Для развития:

<link rel="stylesheet" href="style.css?<?php echo date('Ym-d_H:i:s'); ?>">

Для производства (где кеширование – это в основном хорошая вещь):

<link rel="stylesheet" type="text/css" href="style.css?version=3.2">
(и переписать вручную, когда это необходимо)

Или сочетание этих двух:

 <?php define( "DEBUGGING", true ); // or false in production enviroment ?> <!-- ... --> <link rel="stylesheet" type="text/css" href="style.css?version=3.2<?php echo (DEBUGGING) ? date('_Y-m-d_H:i:s') : ""; ?>"> 

РЕДАКТИРОВАТЬ:

Или более красивое сочетание этих двух:

 <?php // Init define( "DEBUGGING", true ); // or false in production enviroment // Functions function get_cache_prevent_string( $always = false ) { return (DEBUGGING || $always) ? date('_Y-m-d_H:i:s') : ""; } ?> <!-- ... --> <link rel="stylesheet" type="text/css" href="style.css?version=3.2<?php echo get_cache_prevent_string(); ?>">