Чи можна вимкнути кешування браузера клієнтів для конкретних веб-сайтів?


10

Це агностичне запитання браузера, але ми тестуємо IE9.

Одне з веб-додатків, які відвідують наші користувачі, кешується випадковим чином і зміни не відображаються, коли слід. Жоден інший сайт не має цієї проблеми, і ми працювали з продавцем, який стверджує, що це не трапляється ні з ким іншим. Якщо ми використовуємо панель інструментів для розробників і виберемо «примусити оновити з сервера», все оновиться правильно.

Замість того, щоб по-справжньому вирішити проблему, наша думка полягає в тому, щоб обійти її, відключивши кеш для цього конкретного сайту. Однак ми не знаємо як.

Відповіді:


10

Єдиний правильний спосіб відключення кешування браузера - це заголовки HTTP від ​​самого веб-сайту. Сам заголовок HTTP 1.1 "Кеш-контроль" повинен бути достатнім для будь-якого браузера після 2000 року. Але для додаткового захисту сервер може випромінювати як заголовки HTTP 1.1 «Кеш-контроль», так і HTTP 1.0 «Закінчується» разом .

Хакерський, але іноді помічений спосіб обробки недійсного кешу - це рядок "кешбюстер" у URL-адресах із сервера. Кешбюстер часто базується на часовій позначці і додається як рядок запитів до кожного HTML-ПОСИЛАННЯ, щоб зробити URL унікальним і використаним лише один раз. Щось подібне http://example.org/filename.html?cb=<timestamp+random_value>. Це некрасиво, і нічого не робить заголовки HTTP не набагато краще. Але це може бути використане як хак для обмеженої аудиторії (fx в Інтранеті), або як додатковий рівень захисту разом із належними заголовками HTTP.

AFAIK немає можливості вибірково відключити кешування для одного сайту лише з Internet Explorer. Одне (криваво складне) рішення могло б встановити кеш лаку як кеш- посередника у вашій локальній мережі, встановити Internet Explorer використовувати Varnish як HTTP-проксі, а також використовувати мову VCL на Varnish, щоб переписати заголовки HTTP лише для цього конкретного сайту.

Чесно кажучи, я думаю, що ваш продавець тут помиляється. Я б запропонував встановити Fiddler2 для IE або Firebug для Firefox , і подивитися на фактичні заголовки HTTP, які надсилає webapp . Порівнюйте це з підручником з кешування Марка Ноттінгема, про який я вже посилався вище - я здогадуюсь, що заголовки дозволяють кешувати, або, принаймні, не забороняють виразно кешувати.


0

Переконайтеся, що ви встановили відповідні заголовки терміну дії. Якщо ви помістите час у минуле, вміст не буде кешовано. Перевірте час / дату на робочій станції, де працює IS9. Дивіться також: http://www.mnot.net/cache_docs/


0

Якщо ви не можете змінити вміст спірного веб-сайту, ви можете скористатися проксі-сервером, щоб змінити інформацію про вміст у своєму браузері. Це дозволить вам змінити заголовки терміну дії.


0

Якщо веб-сайт дозволяє підключатися через HTTPS, то залежно від вашого браузера ви можете відключити кешування сторінок зашифрованих.

У IE це можна зробити так:

Ви можете двічі перевірити налаштування IE в розділі Параметри Інтернету-> Додатково-> Захист-> Не зберігати зашифровані сторінки на диску.


Він попросив агностичне рішення браузера.
Mircea Vutcovici

1
@Mircea Це IS агностик рішення браузера. Я щойно наводив приклад із використанням IE. У багатьох інших браузерах є можливість вимкнути кешування SSL, але налаштування є в різних місцях.
JeffG

0
<meta http-equiv="PRAGMA" content="NO-CACHE">

http://www.zann-marketing.com/developer/20051018/stop-browser-caching-using-meta-tags.html

Ви можете розглянути можливість використання випадкових ключів у рядку URL-адрес, це також запобіжить кешування в браузері.


Це спрацювало б, якби Голліджер мав можливість змінювати веб-сайт. Я думаю, що він не спирається на своє запитання.
JeffG

Якщо бути точним, "випадкові клавіші" не перешкоджають кешуванню. Веб-переглядач і кеші між ними можуть зберігати відповідь на диску. Але наступного разу, коли буде запрошено той самий файл, випадковий ключ зробить URL-адресу іншою, і таким чином кешована версія на диску не буде використовуватися. Нове представлення буде завантажено з сервера та, можливо, кешоване на диск. Крім того, тег META PRAGMA є старим і не повинен використовуватися - рекомендується використовувати заголовки HTTP Expires та Cache-Control.
Jesper M
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.