Заставлять Google Chrome проверять наличие новых файлов JavaScript при каждом доступе к веб-сайту
Итак, если я иду в Internet Options в Internet Explorer:
Я могу настроить параметры, когда IE проверяет наличие обновлений:
Могу ли я сделать что-то подобное в Google Chrome? Прямо сейчас, когда я изменяю свой файл JavaScript и отлаживаю в Visual Studio, Chrome всегда будет использовать кэшированную версию, а не измененную версию. Для того, чтобы использовать текущую версию, я должен вручную очистить временные файлы / кеш, которые действительно раздражают.
5 ответов
Вариант 1: временно отключить кеш
- Откройте Инструменты разработчика (нажмите F12 или Меню, Дополнительные инструменты, Инструменты разработчика)
- Откройте Настройки инструментов разработчика (нажмите F1 или DevTools Menu, Настройки)
- Установите флажок "Отключить кэш (когда открыт DevTools)" в заголовке "Сеть" панели "Настройки".
Вариант 2: отключить кеш для сессии
Запустите Chrome с помощью переключателей командной строки --disk-cache-size=1 --media-cache-size=1
что ограничит кеш 1 байтом, что эффективно отключит кеш.
Вариант 3: ручное обновление силы
Перезагрузите текущую страницу, игнорируя кэшированное содержимое: Shift + F5 или Ctrl + Shift + r
Сочетания клавиш Chrome - Справка Chrome (в разделе " Сочетания клавиш веб-страницы")
Вариант 4: Дополнительные параметры перезагрузки ( источник)
Открыв Инструменты разработчика, щелкните правой кнопкой мыши кнопку "Перезагрузить", чтобы отобразить меню перезагрузки со следующим:
- Обычная перезагрузка (Ctrl+R)
- Жесткая перезагрузка (Ctrl+Shift+R)
- Пустой кеш и хард перезагрузка
Это может быть не на 100% связано с обновлением хрома, но для дальнейшего развития. Как сказал @Dom, вы можете добавить? V =# после своего ресурса. Одним из способов автоматизации процесса является хеширование содержимого указанного файла и использование его в качестве версии.
У меня есть фрагмент кода о том, как это сделать в C# (Razor для реализации), если это может помочь.
Helper:
public static string HashUrl(string relativeUrl)
{
var server = HttpContext.Current.Server;
if (File.Exists(server.MapPath(relativeUrl)))
{
byte[] hashData;
using (var md5 = MD5.Create())
using (var stream = File.OpenRead(server.MapPath(relativeUrl)))
hashData = md5.ComputeHash(stream);
return relativeUrl.Replace("~", "") + "?v=" + BitConverter.ToString(hashData).Replace("-", "");
}
return relativeUrl + "?v=notFound";
}
Реализация:
<link rel="stylesheet" href=@Util.HashUrl("~/Controllers/Home/Views/Index.css") />
Надеюсь это поможет
РЕДАКТИРОВАТЬ --- Некоторые попросили некоторое время выполнения сборки и для 1000 небольших ресурсов, это занимает приблизительно 11 мс.
https://en.code-bude.net/wp-content/uploads/2013/08/md5_performance_benchmark_2.png
В других случаях, когда это может быть невозможно, например, если вы хотите принудительно выполнить обновление на компьютере конечного пользователя, к которому у вас нет доступа, вы можете добавить номер версии к имени сценария в качестве параметра запроса, чтобы браузер идентифицировал это как другой файл. то есть. example.js?v=1
, Имейте в виду, что вам нужно изменить число при каждой перезагрузке, чтобы заставить его.
Вы также можете сделать это с локальной разработкой, но метод dev tools гораздо эффективнее.
В дополнение к ответу @Steven, когда вы откроете консоль Developer Tools, вы можете щелкнуть правой кнопкой мыши на кнопке обновления и использовать раскрывающееся меню.
В этом меню вы получаете опцию "Очистить кэш и выполнить полную перезагрузку".
Это то, что вы ищете.
Если вы разрабатываете сайт, вы должны знать, что Chrome требует must-revalidate
установка в Cache-Control
для правильного повторного извлечения файлов, когда они изменяются на сервере.
В других ответах рассказывается, как нажать SHIFT-F5, чтобы заставить вашу собственную версию Chrome повторно загружать все файлы. Но разумно ли всем пользователям сайта делать это каждый раз, когда сайт меняется? Если вы установите Cache-Control
включать must-revalidate
затем Chrome проверит, изменились ли какие-либо файлы, а затем, при необходимости, загрузит их должным образом.
Подробности см. В этом сообщении в блоге: https://agiletribe.wordpress.com/2018/01/29/caching-for-chrome/