PHP проверяет, существует ли URL-адрес в кэше браузера

#php #caching #browser-cache

#php #кэширование #браузер-кэш

Вопрос:

Мой веб-проект основан на созданных XSLT страницах XHTML, для создания которых требуется некоторое время. С другой стороны, исходный XML меняется редко. Поэтому я установил кэш браузера с HTTP-заголовком в PHP:

 header("Cache-Control: public, max-age=3600"); 
  

Переход «назад» и «вперед» в браузере теперь очень плавный.

Но есть и другой случай: нажав на некоторые ссылки, пользователь может снова получить ту же страницу. URL-адрес также точно такой же. Но в этом случае страница не загружается из кэша браузера, а создается заново. Я нашел очень хорошее решение для кэша сервера на http://www.webgeekly.com/tutorials/php/learn-how-to-cache-content-with-php-in-under-5-minutes / . Но извлечение файла из кэша браузера было бы даже быстрее.

Итак, есть ли способ в PHP сделать это:

  • проверьте, находится ли определенная часть URL-адреса (например, «output.php?id_of_search= 123454amp;action= select») в кэше браузера
  • если да: загрузите страницу с этим URL-адресом из кэша браузера.

Заранее спасибо!

Ответ №1:

Если ваш php-скрипт выполняется, браузер уже решил не использовать свой кэш. В противном случае он вообще не запрашивал бы вашу страницу и просто обслуживал бы пользователя из кэша. Значение: нет способа запустить кэш в это время с php.

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

Одной из ошибок здесь может быть

 http://example.com/somepage.php
http://example.com/somepage.php?someparam=1
http://example.com/somepage.php?someparam=2
  

Все эти URL-адреса генерируют один и тот же ответ, но браузер считает, что они разные.

Комментарии:

1. Спасибо! Мне пришлось изменить общие элементы управления кэшем в заголовках HTTP в моем файле httpconfig в apache. Теперь все работает так, как ожидалось!