0

我们似乎在客户端缓存 css 文件时遇到问题。我通常通过向文件添加版本号来阻止这引起问题,即

<link href="Default.css?4.31.0.17051" rel="stylesheet" type="text/css">

但在这种情况下,这是行不通的,我不明白为什么。

版本号昨晚从4.30.0.xxxxx增加到4.31.0.17051

一些用户,我自己也看到过,收到了 HTTP 304 响应。奇怪的是,如果我使用 IE 开发工具检查它,它会显示 HTTP 304,如果我启动 fiddler,它根本不会显示任何请求。

服务器上未启用内容缓存。

如果我执行 ctrl-f5,这是 HTTP 标头:

HTTP/1.1 200 OK
Content-Length: 45861
Content-Type: text/css
Last-Modified: Tue, 23 Jul 2013 14:19:40 GMT
Accept-Ranges: bytes
ETag: "0a61aabaf87ce1:bdba"
Vary: Accept-Encoding
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Tue, 30 Jul 2013 16:05:54 GMT

所以:

  • 为什么我在提琴手中没有看到这个?正如这个问题所暗示的那样,它根本没有发送请求(https://stackoverflow.com/a/8958279/542251
  • 为什么这个缓存控制(即添加?4.31.0.17051到文件)不起作用?

编辑

我现在已经触摸了文件,以更新Last-modified日期,但它仍然没有请求它。

所以页面返回 HTTP 200,所以这不是下面建议的页面缓存:

要求:

GET http://www.mysite.com/Agent/Hotel HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: http://www.mysite.com/Agent/Flights
Accept-Language: en-GB
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Accept-Encoding: gzip, deflate
Host: www.mysite.com
Connection: Keep-Alive

回复:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 53184
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
X-AspNetMvc-Version: 3.0
Date: Wed, 31 Jul 2013 08:33:25 GMT




<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <link href="Default.css?4.31.0.17051" rel="stylesheet" type="text/css" />

.........
4

2 回答 2

1

正如您引用的我的回答中所指出的,当真正从缓存中提供响应时,F12 工具可以显示 HTTP/304。如果您在 Fiddler 中看不到请求,则说明它不是通过网络发送的。

您确定没有从缓存中提取引用CSS 文件的页面吗?如果是,那么您仍然拥有旧的 URL 引用。(仔细查看 F12 工具中 CSS 请求的 URL,因为即使“304”不是,该 URL 也是准确的)。

两点: - 什么是“为什么这个缓存控制不起作用?” 意思是?您的 HTTP 响应标头不包含任何 Cache-Control 指令。- 更改服务器上的 Last-Modified 日期显然不是客户端会知道的事情,除非它实际上向服务器发出条件 GET 请求。

于 2013-07-30T16:41:03.863 回答
0

所以我得到了解决方案,但不一定是答案

最后,我将网站上的标签更新为:

<link href="Default.css?v=4.31.0.17051" rel="stylesheet" type="text/css">

我不确定添加v=将其转换为有效的查询字符串是否是解决方案,或者是否只是我再次更改 URL 的事实解决了这个问题。

我无法在 staging 中复制这个问题,所以我真的不知道这是如何或为什么开始发生的。

于 2013-08-01T08:46:15.097 回答