принуждение браузера к кэшированию изображений на веб-сайте php

У меня есть веб-сайт на основе php, и я хотел бы, чтобы браузер кэшировал изображения в течение 30 дней. Я использую решение для общего хостинга, где у меня нет доступа к конфигурации apache для включения заголовков модов или других модулей, поэтому я не могу использовать htaccess механизмы для этого.

мой сайт является обычным приложением php и имеет как HTML-содержимое, так и изображения. Я хочу, чтобы браузер кэшировал только изображения. Я видел функцию заголовка php, но не смог найти способ принудительно кешировать только изображения. Как мне это сделать?

Спасибо


person Abhay Chaware    schedule 19.07.2011    source источник
comment
Это для HTTP / 1.0 или HTTP / 1.1 или для обоих типов запросов?   -  person hakre    schedule 19.07.2011
comment
оба .. это отличается?   -  person Abhay Chaware    schedule 20.07.2011


Ответы (1)


Насколько мне известно, если вы не можете получить доступ к Apache для установки заголовков, ваш единственный другой вариант - использовать изображения из сценария PHP, чтобы вы могли использовать методы заголовка PHP для установки заголовков.

В этом случае вам нужно будет написать обработчик изображений PHP и заменить все теги изображений вызовами этого обработчика (например, http://mysite.com/imagehandler.php?image=logo.png). Затем вы бы попросили скрипт imagehandler.php получить изображение из файловой системы, установить тип mime и заголовки элементов управления кешем и передать изображение обратно клиенту.

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

person Neville Kuyt    schedule 19.07.2011
comment
Ух ты ! Это было бы слишком большим изменением ... кстати, просто установив возраст кеша заголовков, можно было бы кэшировать всю страницу (включая данные)? - person Abhay Chaware; 19.07.2011
comment
Заголовки HTTP применяются к каждому запросу - так что нет, я не думаю, что вы можете настроить страницу для кеширования всех ее дочерних элементов. Да, это большая перемена .... - person Neville Kuyt; 19.07.2011