Использование JavaScript, чтобы сделать недействительный кэш браузера

StackOverflow https://stackoverflow.com/questions/2169361

  •  24-09-2019
  •  | 
  •  

Вопрос

Я делаю проект в Django и использую Djangos-CSS (http://github.com/dziegler/django-css.) и Sass (http://sass-lang.com/). Файлы SASS обслуживаются в разработке с использованием Django-CSS. Я хочу написать рутину JavaScript, которая будет каждым вторым вторым извлекать активы CSS. Целью этого является так, что дизайнер может редактировать файлы SASS, нажмите «Сохранить» и немедленно увидеть результат в браузере без переключения приложений и удара обновления.

По сути, мне нужен способ для JavaScript заставить браузер повторно загрузить определенные файлы без обновления страницы. Это возможно?

Это было полезно?

Решение

Самый простой способ, как правило, добавляют уникальный параметр на URL-адрес, я часто просто использую временную метку

var timestamp = (new Date()).getTime();
url += '?time=' + timestamp;

Просто будьте осторожны, если ваши запросы уже имеют параметры, то вам нужно добавить &time=' + timstamp вместо.

Браузер не может кэшировать запрос, потому что каждый запрос выглядит уникальным.

Другие советы

Не все кеши будут кэшировать контент с помощью строки запроса.

Стив Саудерс Рекомендует: «... избегание квитанции для кешируемых ресурсов». Он обнаружил, что в этом случае 5-20% запросов не будут кэшированы. Строки запросов, в частности, вообще не работают с некоторыми CDN для недействительной кэш-памяти.

Лучший способ состоит в том, чтобы генерировать MD5 с именем файла JavaScript для каждого выпуска, например,

{path to script file}/filename-{md5 hash}.js

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top