У меня есть страница PHP с некоторым Javascript, который изменяет атрибут SRC в теге IMG после фиксированного интервала времени (5 секунд). Существует фиксированное количество изображений, которые я просматриваю. PHP строит массив строк для всех URL-адресов изображений. Изображения маленькие, менее 10k.
Как я могу узнать, кэширует ли браузер изображения, а если не то, что я должен сделать, чтобы обеспечить их кеширование браузером?
Да, браузер будет их кешировать, часто даже когда ваши заголовки говорят об ином. Я нашел, что лучшая комбинация состоит в том, чтобы выпустить необходимые заголовки Cache-Control вместе с добавлением случайной строки к исходному URL-адресу.
Например, установите максимальный возраст в секундах:
header("Cache-Control: max-age=3600");
Затем добавьте случайную строку в свои источники img. Это должно быть в Javascript, а не в PHP, потому что, как только ваши URL-адреса будут сгенерированы на PHP, они не будут обновлять новую случайную строку:
var randomString = "" + new Date().getTime(); var imageUrl = yourImageArray[someIndex] + "?" + randomString;
Надеюсь, вы получите эту идею.
Если вам нужно попытаться заставить браузер не кэшировать определенные изображения, вы должны правильно настроить заголовки, которые сервер отправляет для каждого запроса изображения, чтобы они отправляли соответствующие заголовки Cache-Control.