Кэширование изображений, отдаваемых php

87
16 мая 2021, 15:00

Такая ситуация: у меня есть php скрипт, который проверяет авторизирован пользователь или нет и отдает изображения, хранящиеся на этом сервере.

Так, например, при запросе на localhost/image.php?image=photo.jpg браузер отдаст изображение photo.jpg (Не-не, уязвимости типа File Inclusion там нет:), не надо писать об этом). Но сейчас появилась необходимость кэшировать на короткое время отдаваемые изображения этим скриптом. Я добавил заголовок Expires с временем кэширования на 2 минуты вот так: header("Expires: " . gmdate("D, d M Y H:i:s", time() + 60*2) . " GMT");, Cache-Control у меня по умолчанию стоит public.

Но... браузер по-прежнему делает запрос к серверу для получения изображения, как бы игнорируя вышеприведенные заголовки. А мне нужно, чтобы браузер НЕ делал запросы к серверу, а вытаскивал изображение из кэша.

Подскажите, что я делаю не так... Заранее спасибо!!!

Answer 1

Можете попробовать прописать настройки сервера

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^(.*)\.jpg$ image.php?image=$1 [QSA,L]
</IfModule>

А вообще можно попробовать условия авторизации поставить и просто не обращаться к скрипту.

READ ALSO
Почему цикл вывода статей работает только на 1 странице?

Почему цикл вывода статей работает только на 1 странице?

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

98
php изменить elements xml

php изменить elements xml

есть такой лист хмл

188
&lt;img src(unknown)&gt;

<img src(unknown)>

Есть такая конструкция

94
Сменить index.php на другой файл nginx, vagrant, laravel homestead

Сменить index.php на другой файл nginx, vagrant, laravel homestead

Есть проект на симфони, который хочется развернуть в homestead laravel

113