有什么方法可以强制 Firefox 不缓存重定向(301 和 302)?

有什么方法可以强制 Firefox 不缓存重定向(301 和 302)?

我是一名 Web 开发人员,很多时候我必须创建或更改 301 或 302 重定向。在 Firefox 中测试即时更改非常麻烦,因为它会缓存重定向,因此如果我在服务器端更改重定向,然后硬刷新,旧重定向将被缓存,因此我测试新重定向的唯一方法是删除缓存或启动私人浏览器会话。

话虽如此,解决这个问题并不是特别困难,但它很烦人,特别是当我忘记这样做时,而且看起来我的新重定向不起作用,直到我记得删除缓存或开始一个新的私人会话。

我理解为什么缓存重定向对于正常使用是有益的,但我想出于调试目的禁​​用该行为。

答案1

如果您打开了开发人员工具箱面板(就像 一样F12),您可以设置一个选项来关闭查询缓存。

要设置此选项:

  1. 在任意页面上,点击F12打开开发者工具箱面板。
  2. 单击该面板右上角的齿轮图标。
  3. 在那里,检查“高级设置→禁用缓存(当工具箱打开时)”。

未打开开发者工具箱面板的访问仍会缓存缓存重定向,但不会查询和更新该缓存只要开发人员工具箱已打开。因此您只需暂时地强制 Firefox 不缓存重定向或从缓存中提供重定向,但这对于您的使用情况来说已经足够了。

在 Firefox 41 中已验证。改编自Ryan Bemrose 的回答另一个问题。

答案2

在 Firefox Firebug 中,在Net选项卡下,有一个名为“禁用缓存”的选项。我在进行重定向测试时将其打开,否则我会将其关闭。

在此处输入图片描述

答案3

我完全理解为什么在 99% 的情况下缓存重定向是有益的,但有没有办法禁用这种行为?

好吧,如果你是从 Web 服务器开发的角度来做这件事的,那么期望浏览器“不惜一切代价缓存”的行为会因你的“无休止的开发调整”需求而改变,这是攻击这个野兽的错误方式。当你调试 Web 服务器重定向时,你需要专注于检查标题输出并不是整页渲染输出哪些浏览器提供。

因此,我建议学习如何使用curl命令行选项-I仅返回标头,这对于调试 301 和 302 重定向非常有用。从命令行。如官方curl手册页中所述,该-I选项为:

-I/--头

(HTTP/FTP/FILE)仅获取 HTTP 标头!HTTP 服务器具有 HEAD 命令,该命令仅用于获取文档的标头。当用于 FTP 或 FILE 文件时,curl 仅显示文件大小和上次修改时间。

例如,执行 acurl -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选项(又名--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/。如果您的 Web 开发目标是测试 Apache 重写规则和重定向之类的内容,curl -I那么 是帮助您了解调整效果的最佳工具。

在这些调整完成并完善之后,然后在真实的浏览器中进行最后的运行,以查看它们是否全部变为现实。

答案4

转到并将和about:config都设置为 false。这与选中“禁用浏览器缓存”相同。browser.cache.disk.enablebrowser.cache.memory.enable

相关内容