一、基本的缓存流程;

(1)Url是否变化,比如<img src="a.jpg?v=1"/>,如果src没有变化,则取浏览器缓存资源;如果变化了,如src="a.jpg?v=2",则再次向服务器请求;[也可以直接在地址栏测试,但是注意,不要刷新,刷新一定会再次请求服务器的,可以新开地址栏打开];

(2)浏览器缓存:  max-age(兼容老版本浏览器可以用experied)设置5分钟缓存,则Cache-Control: private, max-age=300  ,如果过期了,就再次向服务器请求数据;

(3)请求数据时候,我们可以根据Etag和lLast-Modified: Fri, 21 Jul 2017 02:06:53 GMT 来比对静态资源的最后修改时间,如果没有变则返回304状态码,浏览器继续使用(一般情况下不做这一步处理,还是请求新的资源);

二、Cache-Control的设置

  c# System.Web.HttpCachePolicy类  

Cache-Control的类型有

 NoCache :不缓存 ,浏览器不缓存,直接取服务器取

 Private  、Server 、ServerAndNoCache、Public 、ServerAndPrivate 等需要设置max-age

 

细节设置参见 http://www.cnblogs.com/_franky/archive/2011/11/23/2260109.html