Скрипт очистки кэша chrome
Я хочу очистить кэш для конкретного доменного имени в Chrome. Есть ли расширение или другой метод, который я могу использовать для этого?
Проблема в том, что очистить кэш не так просто, как вы думаете. Когда браузер кэширует файлы, он делает это на основе своего URL. Сложность заключается в том, что многие сайты используют общие файлы, такие как скрипты API Google, значки Gravatar и т. Д. Как бы вы очистили кэш только для определенного сайта? Следует ли также удалить общие загружаемые файлы (и, таким образом, частично очистить кэш для других сайтов)? Или они должны быть оставлены нетронутыми? (наверное, самое «правильное» решение).
Поскольку инструменты разработчика F12 встроены в Chrome, их использование доступно каждому, а не только «Разработчикам» для очистки определенных элементов.
ОБНОВЛЕНИЕ: Начиная с версии Chrome 52.0.2743.116 m, вы можете выполнить следующие шаги:
F12 > Chrome Developer Tools > Application Вкладка> Clear storage в левом дереве> Выберите элементы данных , чтобы очистить, а затем нажмите кнопку Clear site data .
Это может быть быстрее / проще:
- Нажмите, F12 чтобы открыть Chrome Developer Tools (появится снизу)
- Нажмите настройки "шестеренка" в правом верхнем углу
- Под Генеральный проверить кэш Disable
- Перезагрузите страницу и снова включите кэширование, сняв этот флажок
Но очищает ли он кеш страницы или просто загружает его без использования кеша? То есть, если вы откроете каталог кеша, исчезнут ли какие-либо файлы, связанные с этой страницей, после перезагрузки?
В настоящее время кажется, что Chrome Developer Tools отключает кэш только тогда, когда DevTools открыт, но не очищает его.
После открытия инструментов разработчика (обычно нажатием F12 ), нажмите и удерживайте кнопку «Обновить страницу». В раскрывающемся списке выберите «Очистить кэш и полная перезагрузка».
Не уверен, что это очищает кэш для всего домена. Но, вероятно, удовлетворяет 90% случаев использования людей, которые посещают этот вопрос SE.
Примечание: в некоторых случаях это НЕ откроет всплывающий список. Это потому, что страница не кэшируется в то время, поэтому меню не вызывается.
Попробуйте сначала открыть панель инструментов разработчика - нажмите F12 (или CMD + SHIFT + C для консоли). Я не тестировал на Mac.
не волнуйтесь. Это решение просто быстрее, чем выбранный ответ, и менее радикально, чем просто отключение кэша. Я чувствую, что это должно быть на вершине, и единственный способ получить голосование против - это если люди проверят это, и это работает для них
Вот как можно избирательно удалять файлы cookie Chrome по домену или поддомену:
Просто чтобы добавить к путанице - это сработало для меня для чего-то, что я почти уверен, что это «кеш» И настройки Chrome включают в себя то, что называется «локальное хранилище», поэтому я считаю, что термин «кеш браузера» может быть слишком общим. Я хочу сказать, что этот ответ сработал для меня.
Чтобы Chrome v65 очистил COOKIES, перейдите в «Настройки»> «Дополнительно»> «Настройки содержимого»> «Файлы cookie»> «Просмотреть все файлы cookie и данные сайта»> используйте поле «Поиск файлов cookie», чтобы найти сайт, а затем удалите этот файл cookie
- Нажмите control shift i (или command shift i на OS X), чтобы открыть Dev Tools.
- Щелкните правой кнопкой мыши кнопку перезагрузки рядом с адресной строкой.
- Выберите: «Очистить кэш и выполнить полную перезагрузку».
- F12 (открыть инструменты разработчика)
- F1 (перейти к настройкам)
- В разделе « Предпочтения / Сеть» снимите флажок « Отключить кэш» (пока открыт DevTools)
Обратите внимание, что вы можете снять док-станцию DevTools, если вы предпочитаете держать их как отдельное окно при открытом.
Это удалит все данные сайта для этих сайтов, включая файлы cookie и кеш.
Приятной особенностью этой техники является то, что вы можете легко очистить данные сайта для всех поддоменов домена.
Другой способ доступа к этому экрану настроек:
Меню из трех точек> Настройки> Дополнительно (внизу)> Настройки контента (в разделе «Конфиденциальность и безопасность»)> Файлы cookie (да, имя вводит в заблуждение)> Просмотреть все файлы cookie и данные сайта
Отключите его, тем самым выгрузив весь кэш приложения, перезагрузите уязвимую страницу и снова включите. Если это происходит часто или не устраняет проблему, проблема заключается в некотором кеше восходящего потока от chrome, и вам, вероятно, следует оставить его отключенным.
Выборочная аннулирование кэша уровня приложения (что делается строго для скорости приложения), поскольку chrome не «берет на себя управление бизнесом», может быть ответом на некоторую проблему, но это не очень хороший ответ.
(Чтобы вы не раздражались из-за моего заявления «нет бизнеса», я использую предварительную выборку, так как мне нравится zippiness, правильно или нет)
Удаление записей истории будет работать во многих случаях: (Mac)
- Cmd + Y (Открытая история)
- Поиск вашего домена
- Проверьте все записи. К сожалению, в данный момент нет кнопки « проверить все» . Вам не нужно ставить галочки, хотя, кликая на время, тоже работает.
- Нажмите Remove selected items
Webpack для меня кэшировал предыдущий проект, и мне нужны части кэширования, чтобы я не мог использовать инкогнито. Лучшие 3 решения не сработали для моего случая. То, что работало и было достаточно быстрым для реализации, - это щелкнуть вкладку Ресурсы в инструментах разработчика, развернуть Cache Storage и щелкнуть правой кнопкой мыши, чтобы удалить кэшированные данные.
I am looking for a way to programmatically empty the browser cache. I am doing this because the application caches confidential data and I'd like to remove those when you press "log out". This would happen either via server or JavaScript. Of course, using the software on foreign/public computer is still discouraged as there are more dangers like key loggers that you just can't defeat on software level.
Which browsers? You should also look at telling the browser what not to cache from the server vs. trying to erase it.
@MechSoftware I want to cache for faster page loads, but I want to clear it after log off. Preferably as good browser support as possible.
Вывод
Итак, что мы имеем в сухом остатке?
Карта импортов в настоящее время поддерживается только Chrome . Будет ли она поддерживаться другими браузерами, и, если будет, когда это произойдет, неизвестно. Поэтому, несмотря на интересные возможности, использовать ее при разработке реальных приложений пока нельзя.
Что касается заголовка Clear-Site-Data , то, в целом, он неплохо справляется со своей задачей, однако тот факт, что он не поддерживается Safari , а также учитывая баг в Chrome и не очень понятное поведение браузеров по очистке кешированных данных, говорить о возможности его использования в продакшне также преждевременно.
Многие слышали о стандартном методе очистки кэша и других данных браузера Google Chrome, который доступен по комбинации клавиш Ctrl-Shift-Delete. Это агрессивный способ, который «выкосит» вообще всё. Но немногие слышали об очистке кэшированных файлов лишь для выбранного сайта (вкладки), оставив остальные нетронутыми.
Такой способ намного удобнее, потому что обновляется лишь один сайт, а не вся база. Чтобы активировать его, нажмите на кнопку F12 на вашей клавиатуре для включения режима разработчика. Далее вам надо кликнуть на «Обновить» правой клавишей мышки. Появится окно их трех пунктов:
Карта импортов
Карта импортов (imports map) позволяет использовать так называемые голые спецификаторы импорта (bare import specifiers) в инструкциях import и выражениях import() без участия сборщиков типа Webpack или других инструментов для разрешения путей импортируемых модулей во время выполнения кода.
Предположим, что в нашем проекте используются библиотека lodash и утилита very-simple-fetch :
Для того, чтобы импортировать эти модули без помощи "бандлера", необходимо указать полный путь к соответствующим файлам, хранящимся в директории node_modules :
Карта импортов позволяет связать кастомные ключи — названия модулей — с их расположением. Для этого в теге с типом importmap определяется объект с ключом imports и парами ключ / значение, где значение — это путь к модулю, а ключ — синоним (алиас) для этого пути:
После определения карты импортов, у нас появляется возможность импортировать наши модули следующим образом:
Карты импортов также предоставляют много других интересных возможностей. К сожалению, в настоящее время они поддерживаются только Chrome . Если вы пользуетесь другим агентом, при разработке приложения в практической части статьи импортируйте модули напрямую из node_modules .
Удаленный сервер
Начнем с самого сервера. Создаем для него директорию, переходим в нее, инициализируем проект и устанавливаем зависимости:
Определяем команду для запуска сервера в package.json :
Создаем файл index.js следующего содержания:
- origin — заголовок Access-Control-Allow-Origin
- credentials — заголовок Access-Control-Allow-Credentials
- allowHeaders — заголовок Access-Control-Allow-Headers
Без этих настроек и еще одной на клиенте мы не сможем получить куки от "удаленного" сервера.
Для того, чтобы иметь возможность разворачивать приложения на Heroku , необходимо создать там аккаунт, а также глобально установить heroku-cli :
Инициализируем репозиторий и добавляем в него файлы приложения:
Создаем проект на Heroku :
Проверяем, что наш проект привязан к Heroku-проекту, и отправляем файлы:
Полную инструкцию по деплою приложения на Heroku можно найти здесь.
Добавляем в public/index.html раздел с кнопками для взаимодействия с удаленным сервером:
И вносим несколько изменений в public/script.js :
В разделе Application находим кешированные данные и куки от heroku:
И это не баг Chrome (или баг не только Chrome ), точно такой же результат мы получаем в Firefox :
Директива * также не удаляет кешированные данные, полученные от heroku:
К сожалению, по этой проблеме информации найти не удалось. Если вдруг вы знаете, в чем дело, пожалуйста, сообщите в комментариях.
Обычная перезагрузка (F5)
Это классический способ, который работает при левом клике по кнопке обновления или по кнопке F5. Он перезагружает страницу, используя локальный кэш.
Инструменты
При разработке приложения мы будем использовать несколько инструментов, основными из которых являются следующие:
Жесткая перезагрузка (Ctrl-F5)
Работает по комбинации Ctrl-F5 и перезагружает JavaScript и другие данные с сервера. Часто помогает, если на сервере произошли изменения, а на вашем компьютере в кэше хранятся устаревшие скрипты (сайт загрузится криво).
Ресурсы
О механизмах для хранения данных на стороне клиента, которые мы будем использовать в приложении, я рассказывать не буду. Вот ссылки на отличные ресурсы, посвященные каждому из них:
Теория
13 Answers 13
There's no way a browser will let you clear its cache. It would be a huge security issue if that were possible. This could be very easily abused - the minute a browser supports such a "feature" will be the minute I uninstall it from my computer.
What you can do is to tell it not to cache your page, by sending the appropriate headers or using these meta tags:
You might also want to consider turning off auto-complete on form fields, although I'm afraid there's a standard way to do it (see this question).
Regardless, I would like to point out that if you are working with sensitive data you should be using SSL. If you aren't using SSL, anyone with access to the network can sniff network traffic and easily see what your user is seeing.
Using SSL also makes some browsers not use caching unless explicitly told to. See this question.
Why would I clear the cache of my web app to annoy my users? I want to do that to clear traces of cached private data. If I tell the browser not to cache, it has to request megabytes of client-side data every time the page loads, which is neither want I want to do.
no one would, because obviously it would not be possible. Just like you can't run scripts on another origin does not mean you can't run a script on your origin. If you can't clear cache on a remote origin, that's logical, but why could I not clear cache of the origin I am executing the code? There's no reason why not to, so I am looking if there's a solution to that, but it looks like it's not possible. If you are so curious I can tell you that I have a large application with a lot of CSS, HTML and JS compiled to about 6 MB.
Please explain how no matter the implementation, this would be a security issue? This could be implemented safely.
Maybe I didn't get enough sleep last night, in what ways would it be a security issue, when a web app could clear (not alter) cache? How could you exploit that?
It's possible, you can simply use jQuery to substitute the 'meta tag' that references the cache status with an event handler / button, and then refresh, easy,
NOTE: This solution relies on the Application Cache that is implemented as part of the HTML 5 spec. It also requires server configuration to set up the App Cache manifest. It does not describe a method by which one can clear the 'traditional' browser cache via client- or server-side code, which is nigh impossible to do.
I would say so, and I believe it also it also requires server configuration (to set up the app cache manifest). While this answer offers a solution to the original question, it obscures the fact that it's nigh impossible to clear the traditional browser cache via client- or server-side code.
This method seems to bypass the cache and update the content, but when the page is reloaded, it goes back to the previously cached content.
use html itself.There is one trick that can be used.The trick is to append a parameter/string to the file name in the script tag and change it when you file changes.
The browser interprets the whole string as the file path even though what comes after the "?" are parameters. So wat happens now is that next time when you update your file just change the number in the script tag on your website (Example ) and each users browser will see the file has changed and grab a new copy.
for those using some server-side dynamic language, if you can access the file's ctime , (or mtime ), you can just add said time behind it. For instance in php, myfile.js?v= , and there you've got yourself an auto updating cache for your resources.?=filectime('myfile.js');?>
I was using this technique for many days. But I noticed today that, the file is still being rendered from cache even after I changed the version part. I was using Chrome. It was showing even after I deleted the file from the server. Anyone have any info why it may not work?
This is how I've done it ever since about 2002. It may be ugly, but it has always worked. Without brand new HTML 5.0 features, I think this was the ONLY way to be able to both cache a page and choose when to get a new copy (ie: bust the cache).
The best idea is to make js file generation with name + some hash with version, if you do need to clear cache, just generate new files with new hash, this will trigger browser to load new files
Initially I tried various programmatic approach in my html, JS to clear browser cache. Nothing works on latest Chrome.
Finally, I ended up with .htaccess:
Tested in Chrome, Firefox, Opera
Here is a single-liner of how you can delete ALL browser network cache using Cache.delete()
Works on Chrome 40+, Firefox 39+, Opera 27+ and Edge.
On Chrome, you should be able to do this using the benchmarking extension. You need to start your chrome with the following switches:
In Chrome's console now you can do the following:
As you can tell from above commands, it not only clears the browser cache, but also clears the DNS cache and closes network connections. These are great when you're doing page load time benchmarking. Obviously you don't have to use them all if not needed (e.g. clearCache() should suffice if you need to clear the cache only and don't care about DNS cache and connections).
location.reload(true); will hard reload the current page, ignoring the cache.
Cache.delete() can also be used for new chrome, firefox and opera.
This function do not work with Internet explorer and safari browser. Not sure if work with Microsoft Edge.
Works on Chrome 40+, Firefox 39+, Opera 27+ and Edge.
You could have the server respond with a Clear Site Data directive that instructs the user agent to clear the site's locally stored data.
That header would instruct the user agent to clear all locally stored data, including:
You can send the request using fetch() and do location.reload() afterwards to get a fresh restart.
It is unclear how this answer works and how it is better than the many existing answer. This could be greatly improved with a description of what approach you're following as well as supporting documentation that shows why that will work
While appreciated, this does not clear the browser cache, it seems to cache-bust any links on the given page just by adding params.
just iterate over list of link tags and script tags and append query param at end it loads. just simple as it
Imagine the .js files are placed in /my-site/some/path/ui/js/myfile.js
So normally the script tag would look like:
Now change that to:
Now of course that will not work. To make it work you need to add one or a few lines to your .htaccess The important line is: (entire .htaccess at the bottom)
So what this does is, it kind of removes the 1111111111 from the path and links to the correct path.
So now if you make changes you just have to change the number 1111111111 to whatever number you want. And however you include your files you can set that number via a timestamp when the js-file has last been modified. So cache will work normally if the number does not change. If it changes it will serve the new file (YES ALWAYS) because the browser get's a complete new URL and just believes that file is so new he must go get it.
You can use this for CSS , favicons and what ever gets cached. For CSS just use like so
PowerShell-скрипт по очистке кэша браузеров и Корзины, удалению временных файлов.
- Очистка кэша и Корзины, удаление временных файлов (PowerShell)
- © Starinin Andrey (AnSt), 2017
- © Автономное учреждение Воронежской области 'Многофункциональный центр предоставления государственных и муниципальных услуг', 2017
- Версия: 0.25 (Сентябрь 2018) | Gallery TechNet | PowerShell Gallery
- Основано на коде -Lee Bhogal | By Lee Bhogal, Paradise Computing Ltd - June 2014
- ДобавленPS2EXE-GUIдля компиляции в EXE-файл | PS2EXE-GUI v0.5.0.6 by Ingo Karstein, reworked and GUI support by Markus Scholtes
- Очищает кэши основных браузеров (поддерживаемые браузеры указаны в разделе Браузеры) у всех пользователей компьютера
- Очищает Корзину Windows
- Удаляет временные файлы пользователя и системы
- Сохраняет информацию об удалённых файлах в C:\users\%username%\broom.log или выводит её на экран
- Mozilla Firefox
- Google Chrome
- Chromium
- Яндекс.Браузер
- Opera
- Internet Explorer
Установка не требуется
- Выводить информацию на экран
- Очистить только кэши браузеров
- Очитстить только Корзину и временные файлы (RecycleBin & Temp)
- Очитстить кэши браузеров и Корзину с временными файлами (RecycleBin & Temp)
- Выход
- Очистить только кэши браузеров
- Очитстить только Корзину и временные файлы (RecycleBin & Temp)
- Очитстить кэши браузеров и Корзину с временными файлами (RecycleBin & Temp)
- Выход
- PowerShell-скрипт (разработка в PowerGUI Script Editor v3.8.0.129 и Visual Studio 2017)
- Скомпилированный EXE-файл (компиляцция в PS2EXE-GUI v0.5.0.6 by Ingo Karstein, reworked and GUI support by Markus Scholtes). Компиляция EXE-файла PS2EXE-GUI уменьшило запуск программы в несколько раз, по сравнению с запуском EXE-файла скомпилированного PowerGUI Script Editor v3.8.0.129
Добавлен PS2EXE-GUI для компиляции в EXE-файл
License: MS-LPL
PS2EXE-GUI v0.5.0.6 by Ingo Karstein, reworked and GUI support by Markus ScholtesOverworking of the great script of Igor Karstein with GUI support by Markus Scholtes.
The GUI output and input is activated with one switch, real windows executables are generated.Добавлен ConvertPS2EXE.ps1 для автоматической компиляции в EXE-файл
Создан отдельный модуль - Broom_Module.psm1 с функциями по очистке
Статья состоит из двух частей: теоретической и практической.
В теоретической части мы кратко рассмотрим карту импортов и более подробно Clear-Site-Data .
В практической части мы поднимем два сервера — один будет запускаться локально и, помимо прочего, обслуживать статические файлы нашего приложения, другой мы развернем на Heroku . Сначала мы запросим данные (включая куки) от серверов, сохраним эти данные в браузере с помощью трех наиболее популярных механизмов (локальное хранилище, индексированная база данных и интерфейс кеширования), затем попробуем очистить их с помощью заголовков Clear-Site-Data . Для разрешения путей импортируемых в приложении модулей мы будем использовать карту импортов.
Исходный код проекта находится здесь.
Clear-Site-Data
Данный заголовок принимает следующие директивы:
Директивы могут указываться как по одной:
так и через запятую:
Последний пример аналогичен следующему:
К сожалению, в настоящее время данный заголовок не поддерживается Safari (ох уж этот современный IE :)).
Вот как это должно работать в теории. Скоро мы выясним, что на практике это работает немного по-другому, а кое-что и вовсе не работает.
В каких случаях это помогает?
Первый пункт производит перезагрузку только тех данных, которые не кэшируются на вашем компьютере. Второй и третий пункты для случаев, когда обычная перезагрузка не помогает. Например, если какой-то из сохраненных файлов поврежден или устарел, то сайт будет работать некорректно. Такое бывает, когда разработчики ресурса обновили его, а на вашем компьютере сохранены предыдущие версии скриптов и других данных, которые обновляются через продолжительный промежуток времени.
Также проблемы с работоспособностью сайтов могут возникнуть после очистки кэша некоторыми чистильщиками, которые грубо удаляют файлы из папки браузера. При этом сам обозреватель считает, что эти файлы существуют и пытается их подгрузить.
Во многих описанных случаях хватит варианта номер два (по Ctrl-F5), но в ряде случаев не обойтись без третьего пункта, который запускается через F12 (режим разработчика).
Фронтенд и локальный сервер
Создаем директорию для проекта, переходим в нее, инициализируем проект и устанавливаем зависимости:
Создаем файл server.js для локального сервера и директорию public для статических файлов, а в ней файлы index.html , style.css и script.js :
Не забудьте создать файл .gitignore с node_modules .
Начнем с public/index.html . Создаем контейнер для UI и секцию с кнопками для взаимодействия с локальным сервером:
Обратите внимание на атрибуты data-action кнопок. Это небольшая хитрость позволит нам сильно упростить и сократить код скрипта. А по классам, вы, наверное, догадались, какой CSS-фреймворк мы используем для стилизации.
Добавляем карту импортов для модулей very-simple-fetch и idb :
Честно говоря, поиск нужного файла в директории node_modules — занятие не из приятных. К тому же приходится искать не просто основной файл, но нужную версию файла. Например, ES-модуль idb хранится в директории esm .
Подключаем наш скрипт с типом module :
С вашего позволения файл со стилями style.css я пропущу.
Переходим к public/script.js .
Давайте подумаем, что должен делать наш скрипт.
Вот мои идеи на этот счет:
- записать данные в локальное хранилище
- записать данные в индексированную БД
- записать данные в кеш с помощью Cache API
- получить куки от локального сервера
- при нажатии кнопки отправлять на сервер запрос, в ответ на который сервер будет устанавливать заголовок Clear-Site-Data с соответствующей директивой.
Приступим к реализации ( // -> — означает сигнатуру):
Обратите внимание на то, как мы формируем URL запроса. Мы добавляем к адресу сервера значение атрибута data-action кнопки. Это первая половина хитрости.
Теперь займемся сервером ( server.js ).
Что он должен делать?
Я хочу, чтобы он делал следующее:
Мы передаем клиенту куки вместе с загружаемыми модулями. Получается, что мы делаем это дважды, но это не критично. Поскольку у нас один домен и названия куки совпадают, мы в итоге получим только одно куки.
Обратите внимание на то, как мы извлекаем тип операции — директиву для Clear-Site-Data — из тела запроса. Мы разбиваем строку в массив по символу - и извлекаем второй элемент (элемент по индексу 1). Таким образом, если сервер получил clear-storage , то типом операции (директивой) будет storage .
Также обратите внимание на то, что директива должна быть закавычена, причем кавычки обязательно должны быть двойными ( " ).
Пришло время запустить сервер и убедиться в том, что все работает.
Добавляем в файл package.json команду для запуска сервера для разработки:
Выполняем эту команду в терминале:
Открываем инструменты разработчика, переходим в раздел Application (“Приложение”) и проверяем, что все наши данные успешно сохранены в браузере:
Видим, что данные из локального хранилища, индексированной БД и локального кеша были успешно удалены.
Кажется, что все хорошо, однако нажатие кнопки Reload contexts приводит к возникновению ошибки:
Текст ошибки говорит нам о том, что браузер не может распознать тип операции (тип данных для очистки).
Дело в том, что директива "executionContexts" в настоящее время поддерживается только Samsung Internet , т. е. можно сказать, что не поддерживается. В сети можно найти информацию о том, что данная директива, скорее всего, будет удалена из спецификации.
Дальше интересней: нажатие кнопки Clear all site data также приводит к ошибке:
Хотя должно приводить к очистке данных всех типов.
Здесь мы имеем дело с багом Chrome . Вот все, что мне удалось найти по данному багу. Кажется, в ближайшее время никто не собирается его фиксить.
В Firefox это работает:
Кажется, что эти директивы правильно интерпретируются браузером, т. е. приводят к очистке данных указанного типа.
Но что насчет определения принадлежности данных к источнику ответа перед их очисткой? Для того, чтобы убедиться в том, что удаляются только такие данные необходимо поднять еще один сервер. Для чистоты эксперимента развернем этот сервер на Heroku .
Практика
Очистка кэша и жесткая перезагрузка
Способ работает только из режима разработчика, при нем удаляются сохраненные файлы только для выбранной вкладки (сайта). Может помочь в ряде случаев восстановить работоспособность ресурса, если сбой произошел из-за ошибки в локальных файлах.
Читайте также: