Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Кеширование php-файлов браузером
Форумы портала PHP.SU » Серверное администрирование » Apache и другие веб-серверы » Кеширование php-файлов браузером

Страниц (1): [1]
 

1. mk.vizet - 13 Апреля, 2016 - 00:51:16 - перейти к сообщению
Доброго времени суток, уважаемые форумчане

Каким образом можно заставить браузеры кешировать php-файлы, как физически существующие, так и запрашиваемые через редиректы?
2. armancho7777777 - 13 Апреля, 2016 - 01:55:15 - перейти к сообщению
Браузер получает результат работы этих php-файлов, а точнее - php-кода в них.
Кешировать результат на стороне клиента (браузера) можно так же, как и статических ресурсов (типа картинок, стилей и т.д.) манипулируя заголовками ETag или Last-Modified используя пришедшие заголовки If-Modified-Since (дата) или If-None-Match (хеш).

Примерная логика с одним только хешем:
1. Добавить поле в таблицу для данной страницы какой-нибудь уникальный хеш.
2. Всегда отправлять заголовок ETag со значением того уникального хеша.
3. При модификации данных обновлять хеш.
4. Проверяем, есть ли со стороны клиета заголовок "If-None-Match" (это тот хеш).
Если пришедший хеш не отличается от текущего, то отправляете заголовок со статусом 304 без тела запроса, иначе со статусом 200 и сами данные.

Примерная логика с датой последней модификации, без записи хеша в базу:
1. п.4 с первого примера.
2. Если нет хеша, то генерируем и отсылаем в заголовках. Так же добавляем заголовок "Last-Modified".
Если же хеш есть, то сверяем значение заголовка "If-Modified-Since" с датой последней модификации данных:
если соответствует, то отвечаем одним статусом 304 и с тем же хешем, который пришёл, иначе целиком и с новым хешем.

Как-то так.
3. mk.vizet - 13 Апреля, 2016 - 02:01:59 - перейти к сообщению
т.е. организовать процесс общения браузера с сервером о кешировании этих файлов вручную?
4. armancho7777777 - 13 Апреля, 2016 - 02:03:42 - перейти к сообщению
А как иначе? Данные же динамические?
Это же не статичные html файлы.

mk.vizet пишет:
о кешировании этих файлов вручную?

Точно файлы (а точнее данные в них) статичны ?
Т.е. там прямо статичный текст, без единого php-кода ?
Если да, то отдавайте как есть, без всяких там реврайтов. Сервер сам разрулит.
Возможно надо будет изменить (не уверен: надо смотреть заголовки) расширения на .html, .txt или какой там ещё тип данных внутри.
Да и логично будет, если расширение, будет соответствовать типу содержимого.

Если же данные формируются динамически, то соответствующие заголовки надо тоже формировать вручную.
Вы же отправляете, например заголовок:
Content-Type: text/html; charset=utf-8
А если страница перемещена или только для авторизованных пользователей, то и соответствующий статус ответа 302/403
(Добавление)
Выше добавил ещё вариант.

 

Powered by ExBB FM 1.0 RC1