У меня есть приложение, в котором с помощью PHP создается несколько статических файлов javascript, чтобы позволить параметрам конфигурации изменять статические файлы (путь: mystaticfile.js.php
). Все работает отлично ИСКЛЮЧАЮ, что я не могу заставить настройки кэша работать, и эти ресурсы перезагружаются при каждой загрузке страницы.Заголовки кэша на PHP-файле не работают
Файл PHP использует следующие заголовки, чтобы попытаться установить параметры кэша:
$expires= 60 * 60 * 24 * 60; //cache for 60 days
header('Pragma: public');
header('Cache-Control: max-age=' . $expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT');
header("content-type: application/x-javascript");
Однако, когда файлы обслуживаются они показывают заголовки, которые выглядят как:
HTTP/1.1 200 OK
Date: Sun, 06 Nov 2016 19:18:00 GMT
Server: Apache/2.2.15 (CentOS)
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 744
Keep-Alive: timeout=15, max=95
Connection: Keep-Alive
Content-Type: application/x-javascript
Моих первая мысль заключалась в том, что это могло быть связано с тем, что Apache имеет флаг ExpiresActive
, но я не вижу никаких правил, установленных для файлов PHP.
Чтение онлайн звучит как ETag
вопросов может быть проблема, но я добавил
Header unset Pragma
FileETag None
Header unset ETag
в файл http.conf (и перезапустить службу) и до сих пор нет костей.
Любые мысли?
как о том, чтобы их * .js браузер, скорее всего, кэш, что – nogad
@nogad это не должно иметь никакого значения. Заголовки устанавливаются, и браузер распознает их как файлы JS. Проблема заключается в том, что браузер получает инструкции не кэшировать, несмотря на то, что заголовки заданы php –
. Можете ли вы попытаться добавить некоторый случайный заголовок ('header ('Foo: bar');'), чтобы сначала убедиться, что ваши заголовки применяется? –