![有什么方法可以强制 Firefox 不缓存重定向(301 和 302)?](https://linux22.com/image/1446787/%E6%9C%89%E4%BB%80%E4%B9%88%E6%96%B9%E6%B3%95%E5%8F%AF%E4%BB%A5%E5%BC%BA%E5%88%B6%20Firefox%20%E4%B8%8D%E7%BC%93%E5%AD%98%E9%87%8D%E5%AE%9A%E5%90%91%EF%BC%88301%20%E5%92%8C%20302%EF%BC%89%EF%BC%9F.png)
我是一名 Web 开发人员,很多时候我必须创建或更改 301 或 302 重定向。在 Firefox 中测试即时更改非常麻烦,因为它会缓存重定向,因此如果我在服务器端更改重定向,然后硬刷新,旧重定向将被缓存,因此我测试新重定向的唯一方法是删除缓存或启动私人浏览器会话。
话虽如此,解决这个问题并不是特别困难,但它很烦人,特别是当我忘记这样做时,而且看起来我的新重定向不起作用,直到我记得删除缓存或开始一个新的私人会话。
我理解为什么缓存重定向对于正常使用是有益的,但我想出于调试目的禁用该行为。
答案1
如果您打开了开发人员工具箱面板(就像 一样F12),您可以设置一个选项来关闭查询缓存。
要设置此选项:
- 在任意页面上,点击F12打开开发者工具箱面板。
- 单击该面板右上角的齿轮图标。
- 在那里,检查“高级设置→禁用缓存(当工具箱打开时)”。
未打开开发者工具箱面板的访问仍会缓存缓存重定向,但不会查询和更新该缓存只要开发人员工具箱已打开。因此您只需暂时地强制 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.enable
browser.cache.memory.enable