获取 http-304-status,但仍传输数据

getting a http-304-status, but still data is transfered

我想知道这个观察结果:

我第二次加载网站,firefox 开发人员工具中的网络模块告诉我,例如对于 html 文档:状态=304,类型=html,大小=60kb。

其他一些 type=js 或 css 的资产也被标记为 status=304,但大小 >0

我想知道为什么 firefox 似乎下载了未修改的资产。

对于图像,它似乎按预期工作:只要资产的类型为 jpeg 或 png,并且状态为 304,则大小为 0

有什么解释吗?

这是 Firefox developer-tools 中的 bug。 "Network" 面板中的 "Transferred" 和 "Size" 列对于 304 Not Modified 响应不正确。

"Size"列应该显示资源的大小(如果响应被压缩,则在de-compression之后),无论是直接从缓存中检索,还是在[=11=之后从缓存中检索] 响应,或从服务器检索。在您的情况下,html/css/js 请求工作正常,但 jpeg/png 请求工作不正确,大小不应为 0。

"Transferred" 列应显示通过网络传输的字节数。通常它小于 "Size" 因为响应将被压缩。对于 304 响应,"transferred" 值将是一个非常小的数字,但永远不会为 0(请求 URL、请求 headers、响应 headers 等。 ).

即使对于 Firefox,它也无法始终如一地工作。在 "FirefoxDeveloperEdition" 中,对于 304 响应,jpeg/png 请求与其他 html/css/js 请求完全相同。但是,在常用的"Firefox"中,"Size"为0,"Transferred"为“-”。