Firefox 5 кэширует 301 редирект

92

Есть ли способ отключить эту «функцию»?

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

Если я перестал foo.htmlработать с 301, мне нужно очистить кеш Firefox, чтобы «исправить» это.

Chrome, IE и предыдущие версии Firefox этого не делают.

maxp
источник
Даже удаление кеша не решает эту ошибку для меня (Firefox 17.0.1, Linux).
Конрад Хёффнер
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, который по умолчанию не кэшируется.
Фрэнк Фармер
22
@Boris Zbarsky: Разве вопрос не больше «Как мне очистить кеш?», А не «Как мне вообще предотвратить запись в кеш»?
Бобби Джек,
4
Вопрос действительно казался мне похожим на "Как мне удержаться от очистки кеша"!
Борис Збарский
17
Это отстой, потому что вы не можете "сдвинуть-перезагрузить" перенаправление, даже если знаете, что это неправильно. Любой другой плохо закэшированный ресурс можно перезагружать отдельно, но не эти проклятые перенаправления.
Сэм Уоткинс,
1
Я пробовал использовать 302 редиректа из IIS, но последние версии Firefox (а также Chrome, Edge и IE) также кешируют их, судя по их поведению. Я обнаружил, что открытие и закрытие приватного окна - лучший способ протестировать веб-сайты и избежать заражения кеша вашего браузера.
dsmtoday
117

В 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 03
5
Обратите внимание: если вы хотите, чтобы firefox обновлял свой кеш для вашего перенаправленного URL-адреса, вы можете использовать Web Developer Extensionдля временного управления поведением firefox при изменении, чтобы всегда проверять наличие новой версии, а затем вернуть ее к обычным настройкам. Это находится в разделе Расширение Web Develoepr -> Отключить -> Отключить кеш -> Проверять наличие более новой версии страницы -> Проверять наличие более новой версии страницы каждый раз.
cptstubing06 03
1
Какой бы метод вы ни выбрали, процедура состоит в том, чтобы изменить этот параметр, чтобы всегда проверять наличие новой версии, а затем загрузить свой URL-адрес с кэшированным перенаправлением. Затем он попадет на сервер и получит любой новый ответ, существующий для этого URL-адреса, и обновит свой кеш с новым ответом. Затем вы можете установить частоту проверки кэша обратно на исходное значение (по умолчанию «Когда страница устарела», но я выберу «Один раз за сеанс», чтобы этот точный сценарий обрабатывался без моего участия сейчас).
cptstubing06 03
@ cptstubing06 спасибо за совет! Жаль, что вы не представили его как решение, чтобы я мог проголосовать за него как за лучший способ справиться с этим, когда вы не хотите очищать весь кеш.
Mercurybullet
К вашему сведению, вам, возможно, придется отключить, 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 dev. Firefox обойдет кеш и получит свежие данные с сервера.

Я предпочитаю этот метод, потому что он не меняет поведения браузера для «нормального» просмотра без отладки, и вы не рискуете забыть восстановить глобальный параметр до его исходного значения.

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

Райан Бемроуз
источник
1
Это не помогает кэшированным перенаправлениям.
SuperDuck
3

301 указывает на постоянное перемещение. Поэтому я считаю разумным кэшировать ответ.

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

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

Крис Дайвер
источник
3
Иногда мы разрабатываем или переносим серверы, или отслеживаем неисправность, и нам действительно нужно отключить эти вещи, поскольку они могут действительно мешать.
Джейсон
2

В Firefox версии 38.0

Menu -> Edit -> Preferences -> Advanced -> Network -> Clear Now

Работал у меня.

Соораджлал КГ
источник
1

301 означает «перемещено навсегда» и кэшируется, поэтому я считаю, что это «правильное» поведение браузера. Вам следует использовать 303 См. Другое .

jsz
источник
5
IE и Chrome cache 303, а спецификация HTTP изменяется, чтобы разрешить кеширование. Смотрите черновики на tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-15 . Таким образом, единственный безопасный способ предотвратить кэширование перенаправления - это установить явные заголовки Cache-control.
Борис Збарский