Манифест кэша Сам кеширование
Действительно поставлен в тупик на этом.
Я пытаюсь кешировать некоторые ресурсы с помощью манифеста кеша HTML5 (да, я знаю, не судите меня), но манифест, кажется, кеширует сам.
Файл манифеста на самом деле представляет собой динамический скрипт PHP, поэтому он имеет расширение.php.
Устанавливаются следующие заголовки ( Как мне полностью отключить кэширование в Cakephp?)
header('Cache-Control: no-store, private, no-cache, must-revalidate'); // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0, max-stale = 0', false); // HTTP/1.1
header('Pragma: public');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Expires: 0', false);
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Pragma: no-cache');
header("Content-type: text/cache-manifest");
Манифест содержит следующее в разделе СЕТЬ:
NETWORK:
/cachemanifest
/cachemanifest/
/cachemanifest/*
*/cachemanifest/*
cachemanifest/
cachemanifest
/cachemanifest/manifest.php
cachemanifest/manifest.php
*
Конечно, сам файл манифеста исключен из раздела CACHE:.
Там же есть файл.htaccess в том же каталоге, содержащий это:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/cache-manifest "access plus 0 seconds"
</IfModule>
Сайт построен с использованием CakePHP, который, по-видимому, имеет некоторые "полезные" механизмы кэширования, о которых я мало что знаю. Я бы предположил, что заголовки PHP обойдут все что угодно... PHP может сделать.
Итак, что мне не хватает?
2 ответа
На самом деле, похоже, что один из них работал. Кэшу требуется более 30 секунд, чтобы понять, что ему нужно обновить.
Работа манифеста кеша заключается в том, что для обновления самого манифеста некоторый текст внутри манифеста должен измениться, даже если это всего лишь одна буква. Это можно сделать, добавив автоматическую сборку времени каждый раз, когда происходит изменение в коде.