как обновить изображения, встроенные в файлы CSS или JS - PullRequest
0 голосов
/ 17 марта 2012

CSS-файлы, которые я использую, загружают некоторые изображения, подобные этому:

eg: main.css:  
.nav{  
background-image:url("/www/images/bg.png")  
}

<link href="/www/css/main.css?version=1.2" type="stylesheet" /> 

Файл CSS загружается в HTML, как показано выше.

Я знаю, что есть подход, который добавляет строку запроса, например "? Version = 1.2", чтобы заставить браузер загружать файл css с веб-сервера, а не из кэша. Но моя проблема в том, что это работает нормально для файла CSS, но ничего не делает со встроенными изображениями.

Так что я могу сделать, чтобы браузер загружал изображения, встроенные в файлы css или js, когда я редактирую изображения, но имена остаются прежними?

Я бы не хотел: 1. изменить имя изображения 2. отключить кеширование

спасибо

Ответы [ 4 ]

0 голосов
/ 17 марта 2012

Плагин Google mod_pagespeed для Apache сделает автоматическое управление версиями для вас.Это действительно гладко.http://code.google.com/speed/page-speed/docs/module.html

Он анализирует HTML на выходе из веб-сервера (работает с PHP, rails, python, статическим HTML - что угодно) и переписывает ссылки на CSS, JS, файлы изображений, чтобы они включали код id,Он обслуживает файлы по измененным URL-адресам с очень длинным контролем кэша.Когда файлы изменяются, он автоматически меняет URL-адреса, поэтому браузер должен повторно их получить.В основном это работает, без каких-либо изменений в вашем коде.Он даже сократит ваш код до конца.

Украдено из этого поста Как заставить браузер перезагружать кэшированные файлы CSS / JS?

0 голосов
/ 17 марта 2012

Можете ли вы использовать .htaccess файл на вашем хостинге (с mod_expires)?

<IfModule mod_expires.c>
   ExpiresActive On
   ExpiresByType image/png "access plus 1 minutes"
</IfModule>

РЕДАКТИРОВАТЬ: Я видел ваши измененияВаш вопрос заключается в том, что вы хотите заставить клиента обновлять изображения при обновлении их на сервере, не отключая кэш браузера?

<IfModule mod_expires.c>
   ExpiresActive On
   ExpiresByType image/png "modification plus 1 seconds"
</IfModule>
0 голосов
/ 17 марта 2012

Добавление строки запроса к URL-адресу, например ?version=2, предотвращает кэширование только тогда, когда URL-адрес изменяется каждый раз, например image.png?random=123, где значение random меняется каждый раз при загрузке страницы.Уникальный URL-адрес вынуждает браузер повторно загружать изображение каждый раз, так как URL-адрес не совпадает с URL-адресом кэшированного изображения.

Поскольку вы хотите использовать статический URL-адрес, я бы предложил установитьНастройки HTTP-сервера для отправки заголовка в браузер, чтобы не кэшировать изображения.Дайте мне знать, если вам нужна помощь с этим.

0 голосов
/ 17 марта 2012

Может быть, использовать хром инкогнито, чтобы браузер каждый раз получал изображения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...