Cache-Control от балды

Metal Messiah
На сайте с 01.08.2010
Offline
152
499

Добрый день

По рекомендации одного из онлайн-сервисов, проверяющих насколько сайт пригоден для просмотра с трубок, включил кеширование методом

header("Cache-Control: max-age=36000, must-revalidate");

в index.php (по сути весь движок в нем)

.htaccess пустой (там только 404 прописан)

Других хедеров, которые могли бы эти затирать - нет.

В результате все равно

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Thu, 19 Nov 1981 08:52:00 GMT

Сервер VestaCP (Apache + Nginx)

Откуда растут ноги?

anonymous, думай что говоришь и не забывай подписать отзыв :)
PN
На сайте с 22.08.2012
Offline
103
#1

Рекомендую создать файл test.php со следующим содержимым:


<?php
header("Cache-Control: max-age=36000, must-revalidate");
?>

и проверить ответ сервера.

Мой совет помог? Не скупись! Bitcoin 1Lseddet1o1B6odgXQHbGaWGwRkt1Db8Ef Ethereum 0x450f1a17461e25194B7F9226cDEe70173F39e1e1
Metal Messiah
На сайте с 01.08.2010
Offline
152
#2

Я начинаю верить в шаманский бубен.

test.php выдает правильный заголовок, index.php тоже если после header() выдать die(), но если скрипт будет обработан до конца - хедер no-store, no-cache

И это при том что функция header() из файла и инклюдов вызывается только 4 раза, а именнно код ответа 404, 503 и Location для избавления от дублей. Буду искать кто шлет левый заголовок...

...

Не вижу причины, ни в одном файле в header ничего что касается кеша не задается...

PN
На сайте с 22.08.2012
Offline
103
#3
Metal_Messiah:
Я начинаю верить в шаманский бубен.
test.php выдает правильный заголовок, index.php тоже если после header() выдать die(), но если скрипт будет обработан до конца - хедер no-store, no-cache
И это при том что функция header() из файла и инклюдов вызывается только 4 раза, а именнно код ответа 404, 503 и Location для избавления от дублей. Буду искать кто шлет левый заголовок...

...

Не вижу причины, ни в одном файле в header ничего что касается кеша не задается...

обычно это делается функцией Trace. На PHP этот самый trace можно сделать так: после каждой подозрительной строчки (с include) ставите exit и проверяете ответ сервера, и так до тех пор, пока не найдете причину. Нашли файл - дальше смотрите его и там ищете include☝ либо давайте доступ к серверу (не публично, есс-но)

Metal Messiah
На сайте с 01.08.2010
Offline
152
#4

Та у меня там всего 2 инклюда :)

Движок сам писал в 2010 с доработками в последующие годы. Видимо, туплю. Так и буду делать на локальной копии, чтобы не пугать людей

PN
На сайте с 22.08.2012
Offline
103
#5
Metal_Messiah:
Та у меня там всего 2 инклюда :)
Движок сам писал в 2010 с доработками в последующие годы. Видимо, туплю. Так и буду делать на локальной копии, чтобы не пугать людей

еще одно решение: вставьте header в конец index.php или в конец последнего включаемого файла☝

WEMASTER
На сайте с 16.08.2012
Offline
95
#6

Поищите в коде header() (возможно он задается в подключаемых файлах) ну или задайте вручную нужный вам заголовок кэширования.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий