最近用asp.net 2.0做一个项目,发现一个问题,当使用VaryByParam之后,页面在IE下根本不缓存,在请求同一页面的情况下,IE会再次请求完整的原页面,虽然服务器端已经缓存了,但是每次都返回完整的页面数据会增加不少流量,而且速度也会比较慢。不知大家有没有碰到过这种事情?我的页面缓存描述:<%@ OutputCache Duration="86400" VaryByParam="id" %>
相关信息:
1.去掉VaryByParam后,一切正常,IE会缓存页面,再次请求页面会发送If-Modified-Since头
2.缓存在FireFox下一切正常,FireFox请求同样页面会发送If-Modified-Since头,服务器返回304 Not Modified
3.我定义的是VaryByParam="id",但服务器相客户端发送的http头是 Vary: *,是否正常?
4.我尝试使用VarBuCustom及相应代码替换VaryByParam,但是效果一样,即使设置了VaryByParam="none",服务器还是向客户端发送Vary: *请大家给点看法,这个问题怎么解决,谢谢了!
相关信息:
1.去掉VaryByParam后,一切正常,IE会缓存页面,再次请求页面会发送If-Modified-Since头
2.缓存在FireFox下一切正常,FireFox请求同样页面会发送If-Modified-Since头,服务器返回304 Not Modified
3.我定义的是VaryByParam="id",但服务器相客户端发送的http头是 Vary: *,是否正常?
4.我尝试使用VarBuCustom及相应代码替换VaryByParam,但是效果一样,即使设置了VaryByParam="none",服务器还是向客户端发送Vary: *请大家给点看法,这个问题怎么解决,谢谢了!
Accept: */*
Referer: XXX
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: localhost
Connection: Keep-Alive-----------------------------------HTTP/1.1 200 OK
Date: Sat, 07 Jan 2006 05:21:08 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: public, max-age=86388
Expires: Sun, 08 Jan 2006 05:20:57 GMT
Last-Modified: Sat, 07 Jan 2006 05:20:57 GMT
Vary: *
Content-Type: text/html; charset=utf-8
Content-Length: 18460-------------------------------response信息每次重新访问这个页面max-age会减小,其他字段不变还有,在IE下浏览这些页面,页面大小,创建时间,修改时间都不可用,说明IE根本没有在硬盘上缓存页面。 FireFox下一切正常,郁闷:(
1、IIS 为什么会返回 Vary: *
我这个系统是最近才新装的Windows 2003,直接装的 VS 2005,没有改过IIS的默认设置。在我服务器端设置了VarByParam="id"后,IIS返回Vary: *是正常表现??为什么2005自带的http服务器会有不同结果?我感觉这个头很关键,两个服务器不应该随便有不同的结果吧。2、当服务器返回Vary: *的时候,IE是不是就不在硬盘上保存这个页面了?
我尝试在Google上找了一下答案,没什么结果。这真是一个很挠头的问题:(
非常感谢你对这个问题的关注!
http://dotnet247.com/247reference/msgs/28/143950.aspx问题类似,也是IE客户端不缓存的问题。