php Кеширование изображений

Статус
В этой теме нельзя размещать новые ответы.

loveaboveall

Новичок
Как включить жесткое кеширование изображений на клиенте. Картинки приходят ajax-ом от сервера вставляются в div в src написано так "\img\images.png". Браузер начинает грузить images.png, вот как мне закешировать images.png скажем на год? Директивы Header прописывать так где ? он не к index.php обращается. Пытался шаманить с htaccess:


вариант 1

Код:
IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
</IfModule>

<IfModule mod_headers.c>
  <FilesMatch "\.(ico|jpg|png|gif)$">
    Header set Cache-Control "max-age=2592000, private"
  </FilesMatch>
</IfModule>
не работает в ответах от сервера нет заданной длительности жизни (в 2592000 seconds)


вариант 2

Код:
RewriteRule ^/img\/(.*\.(jpg|jpeg|gif|bmp|png))$ index.php?image=$1 [L]
Не работает. Нет созданной GET переменной image (нечего обрабатывать), а в ответе от сервера получаем 302 Found

Подскажите, как кешировать изображения (только изображения)! Заранее благодарю.
 

AnrDaemon

Продвинутый новичок
Знаем, но к программированию на PHP это никакого отношения не имеет.
 

Breeze

goshogun
Команда форума
Партнер клуба
разрешен .htaccess? включены mod_expires и mod_headers?
 

loveaboveall

Новичок
htaccsess разрешен работает. А вот как узнать работает ли mod_expires и mod_headers незнаю
 

antson

Новичок
Партнер клуба
loveaboveall, статику точно апач отдает ? Может там nginx ? Тогда в его конфиге прописывать нужно.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Последнее редактирование:

loveaboveall

Новичок
жесткое кеширование - это чтоб очистка кеша не помогала? :)
жесткое - это чтобы инфа всегда бралась из кеша, а не тянулась с сервака. Термин жесткое из статьи - http://javascript.ru/optimize/cache-versioning

А вообще в идеале сделать бы чтобы вообще не обращался на сервер, вот закешировал и все, пока версия не обновится, брать только всегда из кеша (насколько я понимаю это реализовано только в Application Cache API так ? и следовательно многие браузеры [версии браузеров] в пролете)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
смешались в кучу кони, люди

термин "жесткое кеширование" - изобретение автора той статьи, но все верно, он расписал ответы на все твои вопросы
 
Последнее редактирование:

loveaboveall

Новичок
loveaboveall, статику точно апач отдает ? Может там nginx ? Тогда в его конфиге прописывать нужно.
Точно апач

разрешен .htaccess? включены mod_expires и mod_headers?
разрешен, все включено, заголовки приходят

смешались в кучу кони, люди

термин "жесткое кеширование" - изобретение автора той статьи, но все верно, он расписал ответы на все твои вопросы
где смешалось? тема про кеширование! и да он все верно расписал, но не все ответы что мне нужны иначе бы я не писал! (я же написал что, подключение правил mod_expires и mod_headers не заставляют браузер кешировать!), а еще я спрашивал про то как сделать, чтобы браузер не шел на сервер вообще а работал локально из кеша, хоть кто-то ответил?

Итак, что было проделано в итоге.
Сначала замышлялось сделать систему кеширования с использованием версий (так как отдавать Last-Modified изображениям не знал как) вот очень похоже как тут тема http://forum.dklab.ru/viewtopic.php?p=439237
Сделал и получил такую же ерунду, но что более интересно, Firefox при полученных заголовках expires и cache-control - все равно лезло за изображением (200 OK) при каждом обращении к серверу (mod_expires и mod_headers работают) :( , смотрел в Firebug-е, вообщем хоть заголовки и приходили - никакого жесткого кеширования не было (на удивление)

В итоге убрал версионость и пришлось сделать все обращения к img htacsess правилом перенаправления в php файл, где он уже проверяет заголовки на дату редактирования и или выдает изображение или not modified. Вот такой изврат, но работает только так!
 
Последнее редактирование:

AnrDaemon

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

loveaboveall

Новичок
anrdaemon, так мура — это потому, что ты же ничего не объяснил и решил просто постоять в сторонке. Я делал как написано, но не работало, за советом пришел сюда, а вместо помощи только и пишите, то что это все фигня. Если это все фигня и мура — аргументируй почему и как правильно нужно, а так каждый может сказать, но для таких людей есть серьезные подозрения, что может быть все наоборот.
 

AnrDaemon

Продвинутый новичок
Я объясняю, когда вижу результаты от моих объяснений. Когда приходит человек, который сам ничего не хочет делать, а результат ему "нужен вчера", что я могу сказать? Задарма чужую работу я не делаю. У меня своей работы хватает.
 

loveaboveall

Новичок
Ну ты и странный. "Который сам ничего не хочет делать" тут только я один и делал. А лично твоих или (Ваших) советов не наблюдается вообще.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху