Php очистка кэша браузера
Я ищу способ программно очистить кеш браузера. Я делаю это, потому что приложение кэширует конфиденциальные данные, и я хотел бы удалить их, когда вы нажимаете «Выйти». Это произойдет либо через сервер, либо через JavaScript. Конечно, использование программного обеспечения на чужом / общедоступном компьютере по-прежнему не рекомендуется, поскольку существует больше опасностей, таких как клавиатурные шпионы, которые просто невозможно победить на программном уровне.
Возможно, вы можете просто использовать jQuery, чтобы заменить «метатег», который ссылается на состояние кэша, обработчиком / кнопкой события, а затем обновить, легко,
ПРИМЕЧАНИЕ. Это решение основано на кэше приложений, который реализован как часть спецификации HTML 5. Также требуется настройка сервера для настройки манифеста кэша приложений. Он не описывает метод, с помощью которого можно очистить «традиционный» кеш браузера с помощью клиентского или серверного кода, что практически невозможно сделать.
Используйте сам html. Есть один прием, который можно использовать. Этот прием заключается в добавлении параметра / строки к имени файла в теге сценария и изменении его при внесении изменений в файл.
Браузер интерпретирует всю строку как путь к файлу, даже несмотря на то, что идет после "?" параметры. Таким образом, теперь происходит то, что в следующий раз, когда вы обновите свой файл, просто измените номер в теге script на вашем веб-сайте (Пример <script src="https://question-it.com/questions/1447330/myfile.js?version=1.0.1"></script> ), и браузер каждого пользователя увидит, что файл изменился, и получит новую копию.
В Chrome вы должны сделать это, используя расширение для тестирования. Вам нужно запустить Chrome с помощью следующих переключателей:
В консоли Chrome теперь вы можете делать следующее:
Как видно из приведенных выше команд, он не только очищает кеш браузера, но также очищает кэш DNS и закрывает сетевые подключения. Это замечательно, когда вы проводите сравнение времени загрузки страницы. Очевидно, что вам не нужно использовать их все, если они не нужны (например, clearCache () должно быть достаточно, если вам нужно очистить только кеш и не заботиться о кеше DNS и соединениях).
Location.reload (истина ) ; сильно перезагрузит текущую страницу, игнорируя кеш.
Cache.delete () также можно использовать для новый хром, firefox и опера.
Лучше всего создать файл js с именем + некоторый хеш с версией, если вам нужно очистить кеш, просто сгенерируйте новые файлы с новым хешем, это заставит браузер загружать новые файлы
Первоначально я пробовал различные программные подходы в моем HTML, JS, чтобы очистить кеш браузера. На последнем Chrome ничего не работает.
Наконец, я закончил с .htaccess:
Протестировано в Chrome, Firefox, Opera
Теперь вы можете использовать Cache.delete ()
Работает на Chrome 40+, Firefox 39+, Opera 27+ и Edge.
Представьте, что .js файлы находятся в /my-site/some/path/ui/js/myfile.js
Поэтому обычно тег script выглядит так:
Теперь измените это на:
Теперь, конечно, это не будет работать. Чтобы это работало, вам нужно добавить одну или несколько строк в ваш .htaccess Важная строка: (весь .htaccess внизу)
Таким образом, это как бы удаляет 1111111111 из пути и ссылается на правильный путь.
Так что теперь, если вы вносите изменения, вам просто нужно изменить номер 1111111111 на любой номер, который вы хотите. И как бы вы ни включали свои файлы, вы можете установить это число с помощью отметки времени, когда js-файл был последний раз изменен. Так что кеш будет работать нормально, если число не меняется. Если он изменится, он будет обслуживать новый файл (ДА ВСЕГДА), потому что браузер получает полный новый URL и просто считает, что файл настолько новый, что он должен его получить.
Вы можете использовать это для CSS , favicons и всего, что когда-либо кэшируется. Для CSS просто используйте так
И это будет работать! Прост в обновлении, прост в обслуживании.
Если у вас нет .htaccess, то это минимум, который вам нужен:
Ни в коем случае браузер не позволит вам очистить кеш. Это было бы огромной проблемой безопасности, если бы это было возможно. Этим можно легко злоупотребить - минута, когда браузер поддерживает такую «функцию», будет минутой, когда я удаляю ее с моего компьютера.
Что вы можете сделать, так это запретить кэшировать вашу страницу, отправив соответствующие заголовки или используя эти метатеги:
Возможно, вы захотите отключить автозаполнение полей формы, хотя, боюсь, есть стандартный способ сделать это (см. этот вопрос).
Несмотря на это, я хотел бы отметить, что если вы работаете с конфиденциальными данными, вы должны использовать SSL. Если вы не используете SSL, любой, имеющий доступ к сети, может прослушивать сетевой трафик и легко видеть то, что видит ваш пользователь.
Использование SSL также заставляет некоторые браузеры не использовать кэширование, если явно не указано иное. См. этот вопрос.
Ситуация следующая: был сайт www.mysite.com оставил много разных куков, кэшированных картинок и стилей css. Сайт обновился, но кэшированная информация у пользователей мешает нормальной работе (особенно google chrome 29). Если отчистить историю+кэш+куки всё отлично начинает работать. Можно ли как то принудительно при первом заходе заставить браузер удалить информацию по этому сайту, а далее уже кэшировать "как всегда"?
7,130 4 4 золотых знака 26 26 серебряных знаков 49 49 бронзовых знаков Я читал про это, в таком случае он не будет кэшироваться вообще, а мне в идеале хотелось бы "отчистить" а потом кэшировать как всегда Пройдитесь по домам ваших посетителей и почистите тогда им кэш :) Как вы представляете себе - все пользователи зайдут к вам одновременно в тот период, когда у вас сервер будет отдавать эти хедеры? Раскиньте мозгами - "маркируйте" очищенных с помощью куков - зашел пользователь? Зашел. Есть кука? Нет. Тогда получи с хедером и поставь новую "маркер"-куку. Следующий раз зайдет - проверяйте "маркер"-куку. Есть? Отлично - не шлите больше хедеров. Продержите такое на время, пока не почувствуете, что пора завязывать с этим механизмом и все "проапдейтились".Или слать header в страницах (как-то в таком стиле)
3,530 14 14 серебряных знаков 27 27 бронзовых знаковУ вас, это то не беда, чтоб на сайте отображались css правильно (как я понял вы его меняете периодически и это ломает отображение сайта) надо всего лишь сделать все время новый адрес загрузки css вот так:
и все браузер будет думать что файл css все время новый и верстка ломаться не будет
а вот у меня другая проблема, на сайте есть авторизация и иногда случается что на некоторые страницы (закрытые не авторизованным пользователям) зайти не получается, дело в том, что браузер в этих случаях даже и не пытается проверить авторизацию и сразу выкидывает на главную, как не аторизованного пользователя. Причем если очистить кеш браузера сразу все работает правильно!
я уже кучу сайтов с авторизацией сделал и такого ниразу не встречал, что мне делать? я просто в шоке.
Я ищу способ программно очистить кэш браузера. Я делаю это, потому что приложение кэширует конфиденциальные данные, и я хотел бы удалить их, когда вы нажимаете "выйти". Это произойдет либо через сервер, либо через JavaScript. Конечно, использование программного обеспечения на иностранном/общедоступном компьютере все еще не рекомендуется, поскольку есть больше опасностей, таких как регистраторы ключей, которые вы просто не можете победить на программном уровне.
возможно, вы можете просто использовать jQuery для замены "мета-тега", который ссылается на состояние кэша с помощью обработчика событий / кнопки, а затем обновить, легко,
Примечание: это решение опирается на кэш приложения, который реализован как часть спецификации HTML 5. Для настройки манифеста кэша приложений также требуется настройка сервера. Он не описывает метод, с помощью которого можно очистить "традиционный" кэш браузера с помощью клиентского или серверного кода, который почти невозможно.
здесь не так браузер позволит вам очистить свой кэш. Если бы это было возможно, возникла бы огромная проблема безопасности. Это может быть очень легко злоупотреблять-в ту минуту, когда браузер поддерживает такую "функцию", будет минута, когда я удалю ее с моего компьютера.
что ты можете do-это сказать, чтобы он не кэшировал вашу страницу, отправив соответствующие заголовки или используя эти мета-теги:
вы, возможно, захотите отключить автозаполнение полей формы, хотя я боюсь, что есть стандартный способ сделать это (посмотреть здесь).
несмотря на это, я хотел бы отметить, что если вы работаете с конфиденциальными данными, вы должны использовать SSL. Если вы не используете SSL, любой, кто имеет доступ к сети, может понюхать сетевой трафик и легко увидеть, что видит ваш пользователь.
использование SSL также делает некоторые браузеры не используйте кэширование, если явно не указано. Видеть этот вопрос.
использовать сам html.Есть один трюк, который можно использовать.Хитрость состоит в том, чтобы добавить параметр/строку к имени файла в теге скрипта и изменить его при изменении файла.
браузер интерпретирует всю строку как путь к файлу, даже если что происходит после "?- это параметры. Итак, wat происходит сейчас, что в следующий раз, когда вы обновляете свой файл, просто измените номер в теге скрипта на своем сайте (пример <script src="https://askdev.ru/q/kak-programmno-ochistit-kesh-brauzera-28648/myfile.js?version=1.0.1"></script> ) и каждый браузер пользователи см. файл изменился и возьмите новую копию.
лучшая идея - сделать генерацию файла js с именем + некоторый хэш с версией, если вам нужно очистить кэш, просто создайте новые файлы с новым хэшем, это вызовет браузер для загрузки новых файлов
в Chrome вы сможете сделать это с помощью расширения бенчмаркинга. Вам нужно запустить chrome со следующими переключателями:
в консоли Chrome теперь вы можете сделать следующее:
Как видно из приведенных выше команд, он не только очищает кэш браузера, но и очищает кэш DNS и закрывает сетевые подключения. Это здорово, когда вы делаете бенчмаркинг времени загрузки страницы. Очевидно, вам не нужно использовать их все, если нет необходимо (например, clearCache () должно быть достаточно, если вам нужно очистить только кэш и не заботиться о кэше DNS и соединениях).
расположение.reload (true); будет трудно перезагрузить текущую страницу, игнорируя кэш.
кэш.исключить () может также использоваться для новых chrome, firefox и opera.
Первоначально я пробовал различные программные подходы в моем html, JS, чтобы очистить кэш браузера. Ничто не работает на последнем Chrome.
наконец, я закончил .реврайт:
протестировано в Chrome, Firefox, Opera
представить .js файлы помещаются в /my-site/some/path/ui/js/myfile.js
поэтому обычно тег скрипта будет выглядеть так:
теперь измените это на:
теперь, конечно, это не сработает. Чтобы заставить его работать вам необходимо добавить одну или несколько строк в свой .htaccess Важная строка: (целиком .htaccess внизу)
так, что это делает, это удаляет 1111111111 С пути и ссылки на правильный путь.
Итак, теперь, если вы вносите изменения, вам просто нужно изменить номер 1111111111 на любой номер, который вы хотите. И однако вы включаете свои файлы, вы можете установить это число через метку времени, когда js-файл был последний раз изменен. Поэтому кэш будет работать нормально, если число не изменится. Если он изменится, он будет обслуживать новый файл (да всегда), потому что браузер получает полный новый URL-адрес и просто считает, что файл настолько новый, что он должен его получить.
вы можете использовать это для CSS , favicons и что когда-либо кэшируется. Для CSS просто используйте так
для моего сайта у меня есть следующие правила htaccess:
Я только что обновил свой сайт, и он выглядел странно, пока я не очистил свой кэш. Как заставить браузер клиента очистить кэш после обновления, чтобы пользователь мог видеть изменения?
вы можете заставить браузеры кэшировать что-то, но
вы не можете заставить браузеры очистить свой кэш.
таким образом, единственный (AMAIK) способ-использовать новый URL для ваших ресурсов. Что-то вроде версии.
как говорили другие ответы, изменение URL-адреса является хорошим методом перебора кэша, однако это много работы, чтобы пройти через больший сайт, изменить все URL-адреса, а также переместить файлы.
аналогичный метод состоит в том, чтобы просто добавить параметр версии в строку URL, которая является случайной строкой / номером или номером версии, и нацелить только измененные файлы.
например, если вы измените свои сайты CSS, и он выглядит шатким, пока вы не сделаете обновление силы, просто добавьте ?ver=1.1 к импорту CSS в начале файла. Это для браузера другой файл, но вам нужно только изменить импорт, а не фактическое местоположение или имя файла.
<link href="assets/css/style.css" rel="stylesheet" type="text/css" />
<link href="assets/css/style.css?ver=1.1" rel="stylesheet" type="text/css" />
отлично работает и для файлов javascript.
у меня есть твоя проблема.
хотя мы можем полностью очистить кэш браузера клиента, но вы можете добавить код в свое приложение, чтобы ваши последние изменения отразились на браузере клиента.
вы не можете заставить браузеры очистить кэш.
ваш .html-файл, похоже, будет повторно загружен раньше, поскольку он истекает через 10 дней. Что вам нужно сделать, это обновить .HTML-файл и переместить все файлы в новую папку, например version-2/ или добавьте идентификатор версии к каждому файлу, например mypicture-2.jpg . Затем вы ссылаетесь на эти новые файлы в своем .html-файл и браузер будут загружать их снова, потому что местоположение изменилось.
вы можете сказать, что браузер никогда не кэширует ваш сайт, вставляя следующий код в заголовок
и чтобы предотвратить кэш JS, css, вы можете использовать инструмент для минимизации и запутывания скриптов, которые должны генерировать случайное имя файла каждый раз. Это заставило бы браузер перезагрузить их с сервера.
надеюсь, что это помогает.
вы можете установить "доступ плюс 1 секунд" , и таким образом он будет обновляться при следующем входе пользователя на сайт. Оставьте настройку на один месяц.
самое прямое-добавить filetime в запрос. например!--1-->
управление версиями по дате.
в моем случае я много меняю конкретный файл JS, и мне нужно, чтобы он был в его последней версии во всех браузерах, где используется.
У меня нет определенного номера версии для этого файла, поэтому Я просто хэш-текущую дату и время (час и минуту) и передать его как номер версии:
Мне нужно, чтобы быть загружены каждую минуту, но вы можете решить, когда он должен быть перезагружен.
теперь следующее не поможет вам с файлами, которые уже кэшированы, но двигаясь вперед, вы можете использовать следующее, Чтобы легко заставить запрос получить что-то новое, без изменения фактического имени файла.
конечно, чем выше в структуре папок вы делаете такой подход, чем больше вы выбиваете вещей из кэша с помощью простого изменения.
так, например, если вы храните весь CSS и JavaScript вашего сайта в основных папка
тогда вы можете начать ссылаться на него как" assets-XXX " в своем html и использовать правило, подобное этому, чтобы выгнать все содержимое активов из кэша.
обратите внимание, что если вы пойдете с этим, после того, как он будет работать, измените 302 на 301, а затем кэширование начнется. Когда это 302, он не будет кэшировать на уровне браузера, потому что это временное перенаправление. Если вы сделаете это таким образом, вы можете увеличить срок действия по умолчанию до 30 дней для всех активов, так как вы можете легко выбить вещи из кэша, просто изменив имя папки на странице входа в систему.
изменить имя .файл CSS Загрузите страницу, а затем снова измените файл на исходное имя, которое он работает для меня.
Читайте также: