Задать вопрос
@MaksSmag

Как обновлять кеш на клиенте с Nginx?

Я включил кеширирование на стороне пользователя сайта. Т.е. теперь если во внешнем файле CSS я изменю стили, то у пользователя естественно останется старая версия стилей (До того как он удалит кеш например с Shift + F5). Как эту проблему исправить?
  • Вопрос задан
  • 422 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
@MaksSmag Автор вопроса
Как и написал Дмитрий, обновить кэшированный CSS файл можно добавив get запрос:
<link rel="stylesheet" href="/style.css?v=1">
В случае выше это
v=1
При этом значение параметра v должно обязательно меняться после изменений в файле. Я предпочёл в своём случае, что значение параметра v (или любого другого) будет дата/время последнего изменения.
Код в отдельном PHP файле:
<?php
    function autov($name) {
        chdir($_SERVER['DOCUMENT_ROOT']);
        $filedir = (getcwd() . '/' . $name);
        echo $name . '?v=' . strval(filemtime($filedir));
    };
?>

Код включения CSS (или любого другого кешированного файла):
<link rel="stylesheet" href="<?php autov('style.css'); ?>">

Надеюсь, больше ничто объяснять не нужно. Будут вопросы - попробую ответить.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@dzhebrak
Добавляйте к файлам css и js случайный параметр, который модифицируйте после внесения изменений в сами файлы. Это сбросит кэш в браузере у пользователя. Например,:
<link rel="stylesheet" href="/style.css?v=1">
После изменения файла style.css увеличьте счетчик на единицу:
<link rel="stylesheet" href="/style.css?v=2">
Ответ написан
Ваш ответ на вопрос

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

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