Firefox 5 "кешування" 301 переспрямовує


92

Чи є спосіб вимкнути цю "функцію"?

Наприклад, якщо зроблено запит до того, http://localhost/foo.htmlщо я вказав "301" на кореневу адресу, усі подальші запити повністю foo.htmlобходять веб-сервер, а ffox 5 перевірить його кеш-пам'ять, прочитайте, що ця URL-адреса була "301" раніше і перенаправляти, навіть не перевіряючи на зміни.

Якщо я зупинився foo.htmlвід 301'ing, я повинен очистити кеш-пам'ять Firefox, щоб "виправити" це.

Chrome, IE та попередня версія Firefox цього не роблять.


Навіть видалення кешу не вирішує цю помилку для мене (Firefox 17.0.1, Linux).
Konrad Höffner

2
@kirdie У діалоговому вікні "очистити недавню історію" переконайтеся, що ви встановили діапазон часу на "все" та встановіть прапорець "кеш". Якщо вибраний діапазон часу останній, ніж ваші відвідування переспрямованої URL-адреси, запис кешу не буде очищений.
Келвін

13
@kirdie та всі з тією ж проблемою: Подивіться на історію за допомогою Ctrl + H. Потім клацніть правою кнопкою миші на сайті та виберіть "видалити всю історію для цього сайту" (або щось подібне). Це зробило це для мене.
Lars Nyström

4
@ LarsNyström: Розробка веб-програми та натрапила на це - ваша пропозиція спрацювала для мене бездоганно. Це було "Забудь про цей сайт" у FF20.0
cincodenada

1
Чи не називається 301 "переміщено назавжди ". Якщо у мене є сервер, що обслуговує лише https, і люди переходять до мого доменного імені за допомогою http (досить погано, оскільки воно відкриває запит uri), я хотів би, щоб браузер запам'ятав що постійно і не перевіряти http кожного разу.

Відповіді:


45

301 - це звичайний код відповіді, який можна кешувати. http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2 говорить:

This response is cacheable unless indicated otherwise. 

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

Ви також можете очистити кеш вручну .


7
Я вважаю, що було б простіше використовувати замість нього 302, який за замовчуванням не кешується.
Frank Farmer

22
@Boris Zbarsky: Чи не питання більше: "Як очистити кеш-пам'ять", а не "Як запобігти першочерговому запису кешу?"
Боббі Джек

4
Звичайно, запитання здавалося мені: "Як мені утриматися від необхідності очищати кеш" для мене!
Борис Збарський

17
Це відмовно, тому що ви не можете "перезавантажити" перенаправлення, навіть коли знаєте, що це неправильно. Кожен інший поганий кешований ресурс можна перезавантажити окремо, але не ці прокляті перенаправлення.
Sam Watkins

1
Я спробував використати 302 переспрямування з IIS, але останні версії Firefox (і Chrome, і Edge та IE) кешують і їх, судячи з їх поведінки. Я виявив, що відкриття та вбивство приватного вікна - це найкращий спосіб перевірити веб-сайти та уникнути отруєння кешу вашого браузера.
dsmtoday

116

У Firefox, якщо у вас є аддон панелі інструментів "веб-розробник". Ви можете натиснути вимкнути -> вимкнути кеш -> кожного разу перевіряти наявність нової версії сторінки. Потім перезавантажте URL-адресу, і це оновить кеш. Тому вам не потрібно очищати повний кеш.

З коментаря cptstubing06 наступне може допомогти очистити кеш:

  1. Введіть, Ctrl+lщоб навести курсор на рядок розташування.
  2. Введіть, about:configщоб відкрити налаштування конфігурації .
  3. Підтвердьте будь-які попередження.
  4. Введіть, browser.cacheа потім - Enterдля фільтрування налаштувань.
  5. Двічі клацніть browser.cache.check_doc_frequency.
  6. Змініть значення з 3на 1.
  7. Клацніть OK.
  8. Перегляньте нав’язливо кешовану сторінку 301.
  9. Після закінчення скиньте частоту до 3.

Тепер Firefox повинен перенаправити на нову сторінку 301, більше не отримуючи перенаправлену сторінку з кешу.


4
Це чудове рішення для мене - я хочу кешувати 301 99% випадків, але, як тільки з’явиться синій, мені, можливо, доведеться змінити місце перенаправлення і не хочу очищати ВСІЙ кеш. Тільки для уточнення, Firefox має власне Web Developerменю під інструментами, яке не є доповненням. Аддон також називається Web Developer, але він відображається у вашому меню Інструменти як Web Developer Extensionі його можна завантажити тут: addons.mozilla.org/en-us/firefox/addon/web-developer .
cptstubing06

5
Зверніть увагу - якщо ви хочете, щоб firefox оновив кеш-пам’ять для вашої перенаправленої URL-адреси, ви можете тимчасово Web Developer Extensionконтролювати поведінку змін Firefox, щоб завжди перевіряти наявність нової версії, а потім встановити його на звичайні налаштування. Це знаходиться під Розширенням веб-розробника -> Вимкнути -> Вимкнути кеш -> Перевіряти новішу версію сторінки -> Кожен раз перевіряти новішу версію сторінки.
cptstubing06

1
Який би метод ви не вибрали, процедура полягає в тому, щоб змінити цей параметр, щоб завжди перевіряти наявність нової версії, а потім завантажити вашу URL-адресу, яка має кешоване переспрямування. Потім він потрапить на сервер і отримає будь-яку нову відповідь для цієї URL-адреси та оновить кеш-пам’ять новою відповіддю. Потім ви можете встановити частоту перевірки кеш-пам’яті на початкове значення (за замовчуванням - „Коли сторінка застаріла”, але я збираюся “Один раз за сеанс”, щоб цей точний сценарій оброблявся без моєї участі зараз).
cptstubing06

@ cptstubing06 дякую за підказку! хотілося б, щоб ви подали його як рішення, щоб я міг підтримати його як найкращий спосіб вирішити це, коли ви не хочете очищати весь кеш.
Mercurybullet

FYI, можливо, вам доведеться відключити DNS over HTTPS, щоб це працювало належним чином.
user2741287

25

Я щойно відчув цю проблему, і для мене це були дві проблеми.

Це конкретне доменне ім'я передається через Cloudflare, тому мені довелося встановити його в режим розробки. Я думаю, Cloudflare кешував перенаправлення 301, тому йому не потрібно було відправляти запит на сервер. Цей крок може не стосуватися вас очевидно.

Потім я просто очистив кеш Firefox (версія 11), перейшовши в Інструменти -> Параметри, натиснувши кнопку Додатково у верхньому правому куті, вибравши вкладку Мережа, а потім клацнувши Очистити зараз у розділі Кешований веб-вміст. Зверніть увагу, що для мого кешу вже встановлено значення 0, але мені все одно потрібно було натиснути кнопку Очистити зараз, щоб переспрямування припинило кешування.

Мені було б цікаво дізнатись, чи хтось ще може це перевірити.


2
+1. Ваша примітка щодо очищення кеш-пам’яті Firefox справді виправила це для мене (як для користувача / клієнта, а не власника веб-сайту) для певної URL-адреси, де Firefox не отримував оновленого 301. Дякую.
Джон Шнайдер,

1
Ви можете видалити лише кешоване переспрямування за допомогою цього плагіна Firefox: addons.mozilla.org/en-us/firefox/addon/cacheviewer-continued
Стів

9

Я знайшов рішення для цього, яке працює у Firefox 26, після того, як застаріле перенаправлення кешоване більше місяця та перезапущено.

  1. У меню Історія виберіть Показати всю історію.
  2. Під час пошуку введіть домен із кешованою проблемою перенаправлення, щоб відобразити список результатів.
  3. Клацніть правою кнопкою миші на одному з них і виберіть «Забути про цей сайт».

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

Як побічне зауваження, я думаю, що Firefox повинен перенаправляти кеш лише на кілька днів. Кешування їх більше місяця може зробити просту помилку великою проблемою.


2
Це працює, але зауважте, що "Забудьте про цей сайт" також забуде історію URL-адрес (для автоматичного заповнення) і навіть збережені паролі для всього домену. Може бути не тим, що ти хочеш.
tanius

5

Одним із швидких виправлень є використання приватного вікна браузера.


Це моє швидке виправлення, і іноді просто додавання знака питання в кінець URL-адреси може зробити трюк.
johnsnails

5

Інструменти розробника, вбудовані в останні версії Firefox, мають рішення для цього. Спочатку вимкніть кешування, коли відкрита панель розробника:

  • На будь-якій сторінці натисніть, F12щоб відкрити інструменти розробника
  • У крайньому правому куті натисніть значок шестірні "Параметри панелі інструментів"
  • Під Advanced Settingsперевірте опціюDisable Cache (when toolbox is open)

Тепер, коли ви хочете примусити оновити кешовану сторінку, завантажте / оновіть сторінку, відкривши панель інструментів розробника F12. Firefox обійде кеш і отримає свіжі дані з сервера.

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

Перевірено у Firefox 39


1
Це не допомагає кешованим переспрямуванням.
SuperDuck

3

301 означає, що переїхали назавжди. Тому я вважаю розумним кешувати відповідь.

Ви пробували встановлювати заголовки cache-controlта expires?

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9


3
Іноді ми розробляємо або мігруємо сервери, або відслідковуємо несправність, і нам дійсно потрібно вимкнути ці речі, оскільки це дійсно може завадити.
Джейсон,


1

301 означає "Переміщено назавжди" та може кешуватися, тому я вважаю, що це "правильна" поведінка браузера. Ви повинні використовувати 303 Див. Інше .


5
Кеш-пам’ять IE та Chrome 303 та специфікація HTTP змінюються, щоб дозволити його кешування. Див. Чернетки на tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-15 . Отже, єдиним безпечним способом запобігти перенаправленному кешуванню є встановлення явних заголовків управління кешем.
Борис Збарський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.