@BloodVIRUS

Как отдавать nginx только изменившиеся файлы?

Здравствуйте. Можно ли как то через nginx отдавать в браузер только изменившиеся файлы? Получается если пользователь перезаливает картинку на другую, но с тем же названием, то старая все еще живет в кэше. Кэш настроен на 10 дней:

location ~* ^.+\.(jpg|jpeg|gif|png|ico|bmp)$ {
        #access_log           off;
        expires                      10d;
		error_page 404 = @fallback;
        break;
    }

И только через очистку кэша браузера картинка меняется. Отключать кэширование вообще - не лучшая идея.
Спасибо.
  • Вопрос задан
  • 149 просмотров
Решения вопроса 2
@axeax
Если картинка попала в кэш, то браузер её и запрашивать заново не будет, сервер не при чем. Есть вариант в нужных местах где картинка поменялась добавлять к адресу картинки ?rnd=рандомное_число
Ответ написан
Комментировать
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Есть такой прием, называется "cache busting". Это когда к ссылке на статический файл (jpg, css, js и тд) добавляется произвольная или инкрементальная строка в виде GET-параметра, как написал axeax, только там может быть что угодно. Есть 2 основных способа - либо рандомный набор символов, либо "версия", имеющая смысл - это может быть стандартное версионирование кода / релиз - например, ?v=2.0.1 или же кусок хеша коммита из VCS, например ?v=952f038. Сам параметр может называться как угодно - v, rnd, version и тд. Смысл в том, что если присутствует такой параметр и он отличается от предыдущего - браузер запросит свежий файл. Но Google PageSpeed например на эти параметры ругается. Впрочем, пусть идет лесом, его рекомендации далеко не всегда имеют смысл.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы