@exaller

Как правильно обновлять ресурсы сайта?

Столкнулся с проблемой.

Если после апдейта ресурсов сайта, они не всегда обновляются браузером, а берутся из кеша.
Как с этим бороться? Что посоветуете?
Только, пожалуйста, без ответов "ctrl+F5"... Это каждому посетителю не посоветуешь :(
  • Вопрос задан
  • 259 просмотров
Пригласить эксперта
Ответы на вопрос 2
AlexXYZ
@AlexXYZ
O Keep Clear O
Обычно надо править заголовки в отдаваемых ресурсах, чтобы ресурсы не проксировались.
1. Для java, например выставляю:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0);

обычно их бывает достаточно.

2. можно трафик через nginx прогонять и выставлять эти заголовки и т.д.
Ответ написан
neluzhin
@neluzhin
Вы можете просто делать что-то типа такого:

<link rel="stylesheet" href="/assets/css/styles.css?modified=<?php echo filemtime(APPPATH . '../assets/css/styles.css'); ?>">

Этот PHP-код проверяет дату последнего изменения файла и подставляет его в query файла. Алгоритм в других языках точно такой же. На выходе получается что-то вроде такого:

<link rel="stylesheet" href="/assets/css/styles.css?modified=1471224794">

Но это считается плохой практикой, т.к. некоторые кэширующие прокси-серверы не кэшируют статические ресурсы, содержащие query-строки (в нашем случае это ?modified=1471224794).

Хорошая практика - это отдавать файлы примерно так:

<link rel="stylesheet" href="/assets/css/7c624717f06078161d803fc4ea84fc23.css">

Здесь название файла - это закодированная через MD5 дата последнего изменения. Но автоматизация подобной системы может занять некоторое количество сил и времени. Таким методом пользуются, например, Тостер и GitHub.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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