我们似乎在客户端缓存 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" />
.........