Как очистить кеш браузера с помощью JavaScript?
Мы развернули последний код JavaScript, но мы не можем получить последний код JavaScript.
От редакции. Этот вопрос частично дублируется в следующих местах, и ответ на первый из следующих вопросов, вероятно, является лучшим. Этот принятый ответ больше не является идеальным решением.
Как заставить браузер перезагрузить кэшированные файлы CSS / JS?
Как заставить клиентов обновить файлы JavaScript?
Динамическая перезагрузка локального Javascript источника / данных JSON
javascript
caching
Дилан Брамс
источник
источник
?version=xxx
файлы к связанным JS-файлам на этапе сборки. Каждая новая сборка будет запрашивать новую версию файла JS.Ответы:
Вы можете вызвать window.location.reload (true), чтобы перезагрузить текущую страницу. Он будет игнорировать любые кэшированные элементы и получать новые копии страницы, CSS, изображений, JavaScript и т. Д. С сервера. Это не очищает весь кеш, но имеет эффект очистки кеша для страницы, на которой вы находитесь.
Однако вашей лучшей стратегией является создание версии пути или имени файла, как указано в различных других ответах. Кроме того, см. Revving Filenames: не используйте строку запроса по причинам, которые не следует использовать в
?v=n
качестве схемы управления версиями.источник
Вы не можете очистить кеш с помощью JavaScript. Распространенным способом является добавление номера редакции или последней обновленной метки времени в файл, например так:
или
myscript.js?updated=1234567890
источник
Попробуйте изменить src файла JavaScript? Из этого:
К этому:
Этот метод должен заставить ваш браузер загрузить новую копию файла JS.
источник
Помимо кэширования каждый час или каждую неделю, вы можете кэшировать в соответствии с данными файла.
Пример (в PHP):
или даже использовать время модификации файла:
источник
Вы также можете принудительно перезагружать код каждый час, например, в PHP:
или
источник
поместите это в конце вашего шаблона:
источник
попробуйте использовать это
К этому:
источник
Вот фрагмент того, что я использую для своего последнего проекта.
С контроллера:
С точки зрения:
Наш процесс публикации генерирует файл с номером ревизии текущей сборки. Это работает с помощью URL, кодирующего этот файл и использующего его в качестве кеша. В случае отработки отказа, если этот файл не существует, используются год и номер недели, чтобы кэширование продолжало работать, и оно будет обновляться не реже одного раза в неделю.
Кроме того, это обеспечивает очистку кеша при каждой загрузке страницы в среде разработки, поэтому разработчикам не нужно беспокоиться об очистке кеша для любых ресурсов (вызовов javascript, css, ajax и т. Д.).
источник
или вы можете просто прочитать js файл сервером с помощью file_get_contets, а затем добавить в заголовок echo содержимое js
источник
Возможно, «очистка кеша» не так проста, как должна быть. Вместо очистки кеша в моих браузерах я понял, что «касание» файла фактически изменит дату кеширования исходного файла на сервере (проверено на Edge, Chrome и Firefox), и большинство браузеров автоматически загрузят самую свежую свежую копию что на вашем сервере (код, графика и любые мультимедиа тоже). Я предлагаю вам просто скопировать самые последние сценарии на сервере и решить проблему "сделать что-то на ощупь" перед запуском вашей программы, поэтому она изменит дату всех ваших проблемных файлов на самую последнюю дату и время, а затем загрузит свежую копию в ваш браузер:
... остальная часть вашей программы ...
Мне потребовалось некоторое время, чтобы решить эту проблему (поскольку многие браузеры по-разному работают с разными командами, но все они проверяют время файлов и сравнивают их с загруженной в браузере копией, если обновление даты и времени выполнят обновление), если вы не может идти по правильному пути, всегда есть другое полезное и лучшее решение. С наилучшими пожеланиями и счастливого кемпинга.
источник
У меня были некоторые проблемы с кодом, предложенным yboussard. Внутренняя J-петля не работает. Вот модифицированный код, который я использую с успехом.
источник
Если вы используете php, можете сделать:
источник
Cache.delete () можно использовать для новых Chrome, Firefox и Opera.
источник
You don't have to use it in conjunction with service workers, even though it is defined in the service worker spec.
Пожалуйста, не дайте неверную информацию. Cache api - это другой тип кэша от http cache
HTTP-кеш запускается, когда сервер отправляет правильные заголовки , вы не можете получить доступ с помощью javasvipt.
Cache api, с другой стороны, запускается, когда вы хотите, он полезен при работе с сервисным работником, поэтому вы можете пересечь запрос и ответить на него из этого типа кеша, см .: ilustration 1 ilustration 2 course
Вы можете использовать эти методы, чтобы всегда иметь свежий контент для ваших пользователей:
Я бы рекомендовал третий увидеть
источник
Вы также можете отключить кэширование в браузере с помощью мета-тегов HTML, просто поместив HTML-теги в раздел head, чтобы избежать кэширования веб-страницы во время кодирования / тестирования, а когда вы закончите, вы можете удалить мета-теги.
(в главном разделе)
Обновите свою страницу после вставки этого в заголовок и также должны обновить новый код JavaScript.
Эта ссылка даст вам другие варианты, если они вам нужны http://cristian.sulea.net/blog/disable-browser-caching-with-meta-html-tags/
или вы можете просто создать кнопку, как так
он обновляется и избегает кеширования, но он будет там на вашей странице, пока вы не закончите тестирование, а затем вы можете снять его. Первый вариант лучше всего.
источник
Я склоняюсь к версии своего фреймворка, затем применяю номер версии к сценариям и путям стилей
источник
закройте и откройте браузер после выполнения кода в консоли.
источник
window.location.reload(true)
кажется, устарел по стандарту HTML5. Один из способов сделать это без использования строк запроса - использоватьClear-Site-Data
заголовок , который кажется стандартизированным .источник
Потому что браузер кеширует ту же ссылку, вы должны добавить случайное число в конце URL.
new Date().getTime()
создать другое число.Просто добавьте
new Date().getTime()
конец ссылки как вызовВывод:
https://stackoverflow.com/questions.php?1571737901173
источник