Есть ли способ заставить Firefox НЕ кэшировать перенаправления (301 и 302)?

11

Я веб-разработчик, и много раз мне приходилось создавать или изменять редирект 301 или 302. Тестировать немедленные изменения в Firefox неудобно, потому что он кэширует перенаправления, поэтому, если я изменяю перенаправление на стороне сервера, а затем жестко обновляю, старое перенаправление кэшируется, поэтому единственный способ проверить новое - это удалить мой кеш или начать сеанс частного браузера.

Это, как говорится, не особенно сложно обойти, но это раздражает, особенно когда я забываю сделать это, и похоже, что мой новый редирект не работает, пока я не забуду удалить кеш или начать новый закрытый сеанс ,

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

chiliNUT
источник

Ответы:

8

Вы можете установить опцию отключения просмотра кэша, если у вас открыта панель инструментов разработчика (как это происходит с F12).

Чтобы установить эту опцию:

  1. На любой странице нажмите, F12чтобы открыть панель инструментов разработчика.
  2. Нажмите на значок шестеренки в правом верхнем углу этой панели.
  3. Там отметьте «Расширенные настройки → Отключить кэш (когда панель инструментов открыта)».

Перенаправления кэша по-прежнему будут кэшироваться при посещениях, если панель инструментов разработчика не открыта, но этот кэш не используется и не обновляется, пока панель инструментов разработчика открыта. Таким образом, вы только временно заставляете Firefox не кэшировать перенаправления или обслуживать перенаправления из кэша, но этого может быть достаточно для вашего варианта использования.

Проверено в Firefox 41. Адаптировано от ответа Райана Бемроуза на другой вопрос.

tanius
источник
2

Я полностью понимаю, почему в 99% случаев полезно кэшировать перенаправления, но есть ли возможность отключить такое поведение?

Что ж, если вы делаете это с точки зрения разработки веб-сервера, то ожидание того, что поведение браузера «кешируется любой ценой» будет изменено в соответствии с вашими потребностями в «бесконечной настройке разработки», является неправильным способом атаковать этого зверя. Когда вы отлаживаете перенаправления веб-сервера, вам нужно сосредоточиться на проверке вывода заголовка, а не вывода полной страницы, предоставляемого браузерами.

Поэтому вместо этого я бы порекомендовал узнать, как использовать curlи -Iпараметр из командной строки, чтобы возвращать только заголовки, что очень полезно для отладки перенаправлений 301 и 302. Из командной строки. Как объяснено на официальной curlстранице руководства, -Iопция:

-I / - голова

(HTTP / FTP / FILE) Получить только HTTP-заголовок! На HTTP-серверах есть команда HEAD, которая используется для получения только заголовка документа. При использовании в файле FTP или FILE, curl отображает только размер файла и время последнего изменения.

Например, сделайте a, curl -I google.comи результат будет примерно таким:

HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Sat, 11 Apr 2015 04:37:42 GMT
Expires: Mon, 11 May 2015 04:37:42 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Alternate-Protocol: 80:quic,p=0.5

И если вы хотите проследить всю цепочку перенаправления через заголовки, добавьте -Lпараметр (aka:) --locationв команду, например так:

curl -I -L google.com

И вывод этой команды после цепочки перенаправления местоположения будет выглядеть примерно так:

HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Sat, 11 Apr 2015 04:48:14 GMT
Expires: Mon, 11 May 2015 04:48:14 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Alternate-Protocol: 80:quic,p=0.5

HTTP/1.1 200 OK
Date: Sat, 11 Apr 2015 04:48:14 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=69d90e4d7a0fcbbb:FF=0:TM=1428727694:LM=1428727694:S=1xqS-toEoa5saQ7n; expires=Mon, 10-Apr-2017 04:48:14 GMT; path=/; domain=.google.com
Set-Cookie: NID=67=pkHjv88MsTB_eB1OqqcMm03kTkFNOSaN4ZEiE5iGViEt7AiJWBc6R-0qJ5s1xu3i5Peg5aHOBHyr7n4-oAxyEE2cL_dBPRLYODst0H-Ztfgrf_6LYXXlix9eghSB8Hzc; expires=Sun, 11-Oct-2015 04:48:14 GMT; path=/; domain=.google.com; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Alternate-Protocol: 80:quic,p=0.5
Transfer-Encoding: chunked
Accept-Ranges: none
Vary: Accept-Encoding

Обратите внимание на ответ заголовка, HTTP/1.1 301 Moved Permanentlyа также Location: http://www.google.com/. Если ваша цель веб-разработки заключается в тестировании таких вещей, как правила переписывания Apache и перенаправления, curl -Iэто лучший инструмент, который поможет вам увидеть, что делают ваши настройки.

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

JakeGould
источник
2

В Firefox Firebug на Netвкладке есть опция «Отключить кэш». Я включаю это, когда выполняю тестирование перенаправления, и я выключаю его в противном случае.

введите описание изображения здесь

chiliNUT
источник
1

Перейти about:configи установить оба browser.cache.disk.enableи browser.cache.memory.enableложь. Это то же самое, что и проверка «Отключить кэш браузера».

Цянь
источник