26

Итак, если я иду в Internet Options в Internet Explorer:

Я могу настроить параметры, когда IE проверяет наличие обновлений:

Могу ли я сделать что-то подобное в Google Chrome? Прямо сейчас, когда я изменяю свой файл JavaScript и отлаживаю из Visual Studio, Chrome всегда будет использовать кэшированную версию, а не измененную версию. Чтобы использовать текущую версию, я должен вручную очистить временные файлы / кеш, которые действительно раздражают.

5 ответов5

54

Вариант 1: временно отключить кеш

  1. Откройте Инструменты разработчика (нажмите F12 или Меню, Дополнительные инструменты, Инструменты разработчика)
  2. Откройте Настройки инструментов разработчика (нажмите F1 или DevTools Menu, Настройки)
  3. Установите флажок «Отключить кэш (когда открыт 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)
  • Пустой кеш и хард перезагрузка
8

Это может быть не на 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/2013/08/07/md5-hashes-in-c-benchmark-and-speed-%E2%80%8B%E2%80%8Boptimization/

https://en.code-bude.net/wp-content/uploads/2013/08/md5_performance_benchmark_2.png

5

В других случаях, когда это может быть невозможно, например, если вы хотите принудительно выполнить обновление на компьютере конечного пользователя, к которому у вас нет доступа, вы можете добавить номер версии к имени сценария в качестве параметра запроса, чтобы браузер идентифицировал это как другой файл. то есть. example.js?v=1 . Имейте в виду, что вам нужно изменить число при каждой перезагрузке, чтобы заставить его.

Вы также можете сделать это с локальной разработкой, но метод dev tools гораздо эффективнее.

3

в дополнение к ответу @Steven, когда вы откроете консоль Developer Tools , вы можете щелкнуть правой кнопкой мыши на кнопке обновления и использовать раскрывающееся меню.

В этом меню вы получаете опцию «Очистить кэш и выполнить полную перезагрузку».

Это то, что вы ищете.

1

Если вы разрабатываете сайт, то вы должны знать, что Chrome требует установки must-revalidate в Cache-Control для правильного повторного извлечения файлов при их изменении на сервере.

В других ответах рассказывается, как нажать SHIFT-F5, чтобы заставить вашу собственную версию Chrome повторно загружать все файлы. Но разумно ли говорить всем пользователям сайта делать это каждый раз, когда сайт меняется? Если вы установите в Cache-Control значение must-revalidate Chrome проверит, изменились ли какие-либо файлы, а затем при необходимости загрузит их должным образом.

Подробности см. В этом блоге: https://agiletribe.wordpress.com/2018/01/29/caching-for-chrome/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .