问题描述
我正在尝试在我的 Web 应用程序中调试一些棘手的行为:看起来好像客户端正在发送 XHR GET 请求,但服务器实际上从未接收到它.此外,客户端似乎在看不见的请求中接收到与它发送的前一个 XHR 请求一样的重复数据.
I'm trying to debug some tricky behaviour in my web application: It appears as though an XHR GET request is being sent by the client, but the server never actually receives it. Furthermore, the client seems to receive duplicate data in the unseen request as the previous XHR request it sends.
更令人困惑的是,Firebug 在 Net 面板中将第二个 XHR 请求着色为浅灰色(这里的请求是倒数第三个,第二个GET 测试"):
Further confounding matters, Firebug colors the second XHR request as light gray in the Net panel (the request here is third from the bottom, the second "GET test"):
我还没有找到任何关于这种颜色含义的文档.我想如果我理解这一点,它可能有助于解释这种不寻常的行为.
I haven't been able to find any documentation about what this coloring means. I think if I understood this, it might help explain this unusual behaviour.
如果有人有任何见解,如果你能告诉我,我将不胜感激.
If anyone has any insight, I'd appreciate if you could let me know.
推荐答案
"从缓存中提供的 Firebug 颜色代码请求浅灰色……"
所以服务器看不到请求的原因是客户端从未真正发送它,它只是从其缓存中接收响应.如果您使用的是 jQuery,则可以在 ajax() 上使用 cache 属性防止 AJAX 请求被缓存.如果您不使用 jQuery,您可以在请求 URL 的末尾附加一个虚拟参数,该参数的值是当前时间(以毫秒为单位)(这实际上是 jQuery 所相信的).
So the reason the server doesn't see the request is that the client never actually sends it, it simply receives the response from its cache. If you're using jQuery, there is a cache property that you can use on ajax() to prevent AJAX requests from being cached. If you're not using jQuery you can append a dummy parameter to the end of the request URL that has a value of the current time in milliseconds (this is in fact what jQuery does I believe).
url + "?v=" + (new Date()).getMilliseconds()
这应该确保 URL 始终是唯一的,并防止浏览器使用缓存.
This should ensure the URL is always unique and prevent the browser from using caching.
这篇关于如何解释 Firebug Net 面板中的灰色项目?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!