#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. Теперь все работает так, как ожидалось!