如果你不想让客户端缓存(cache)你服务器上的网页的话,在ASP.NET中可以这样控制:
在Page_Load中写:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
我在测试的时候发现一些有趣的东西:
按HTTP 1.0的标准,你可以在html网页上直接使用 <meta http-equiv="pragma" content="no-cache" />
按HTTP 1.1的标准,你可以用:<meta http-equiv="Cache-Control" content="no-cache" />
为了保险起见当然是两个都用上。
但当我尝试在aspx页中加入这两个meta tag的时候,却看见返回的Response的Http Header里面居然显示Cache-Control: Private。
而且ASP.NET也没有办法通过程序来给Response写入pragma这个Http Header。
最后的方案是在aspx页中加入<meta http-equiv="pragma" content="no-cache" /> ,然后在程序中写Response.Cache.SetCacheability(HttpCacheability.NoCache);
这样,返回的Response里就有我预期的那两个header了:
Pragma: No-Cache
Cache-Control: No-Cache
觉得怪怪的。如果有哪位知道我哪里做错了,请赐教。
=========================================================
这里还有一些相关的文章:
How to: Set the Cacheability of an ASP.NET Page Declaratively
How to: Set the Cacheability of an ASP.NET Page Programmatically
还有fiddler这个工具不错,用来调试使用http协议的程序很不错:http://www.fiddlertool.com/fiddler/
另:最近多接触Http协议和各类RFC,觉得做标准也真是不容易,事无巨细面面俱到,最后发布了还要被人横挑鼻子竖挑眼。IT业有句话叫:三流企业做产品,二流企业做技术,一流企业做标准。确实也挺有道理。
有对REST和SOAP的比较感兴趣的朋友么?我们可以交流交流。