http头设定中有关缓存的项目:Cache-control和Pragma

HttpWebRequest默认是有缓存的.


通过设置 : webReq.Headers["Cache-Control"] = "no-cache";

或者             webReq.Headers[HttpRequestHeader.CacheControl] = "no-cache";

都可以设置httpHeaders项目 Cache-Control: no-cache  来达到无缓存读取页面的目的。


下图是通过上面的设置GET一个网页后捕获的头信息:

image.png


使用http头项目Pragma: no-cache同样可以无缓存读取页面的目的
设定方式为:  webReq.Headers[HttpRequestHeader.Pragma] = "no-cache";  image.png

关于Pragma:no-cache,跟Cache-Control: no-cache相同。Pragma: no-cache兼容http 1.0 ,Cache-Control: no-cache是http 1.1提供的。因此,Pragma: no-cache可以应用到http 1.0 和http 1.1,而Cache-Control: no-cache只能应用于http 1.1.


另附上网站缓存的规则:

网站缓存的工作规则

所有的缓存都有一整套工作机制(当然,在缓存没有被禁止的前提下),其中一些规则来自于HTTP协议(扩展阅读>>)(HTTP 1.0 和 1.1),另一些则来自管理员(有可能是浏览器,也有可能是代理)。

通常来说,它们有一些共有的规则:

  1. header响应头部分可以设置了是否进行缓存.

  2. 如果请求是经过HTTP 认证 (HTTP AUTH扩展阅读>>)或是SSL安全链接 (i.e., HTTPS),缓存也无法工作.

  3. 如果符合以下条件,缓存机制的启用是通过页面的刷新引起(不需要经过检测服务器就可以直接发送到客户端):

    • 时间没有超过已设置的缓存页面过期时间或者其它类似 age-controlling(指示客户机可以接收生存期不大于指定时间的响应) 的设置。

    • 缓存是最近请求时保存的,或是缓存修改的时间也是新的。

  4. 当资源过期时(使用Cache-Control标识的max-age),发现资源具有Last-Modified(Etag)声明,则再次向web服务器请求时带上头 If-Modified-Since(If-None-Match),表示客户端请求时间。web服务器收到请求后发现有头If-Modified-Since(If-None-Match)则与被请求资源的最后修改时间进行比对。若最后修改时间较新,说明资源又被改动过,则响应整片资源内容(写在响应消息包体内),HTTP 200;若最后修改时间较旧,说明资源无新修改,则响应HTTP 304 (无需包体,节省浏览),告知浏览器继续使用所保存的cache

  5. 特定情况— 比如, 与服务器断开连接 — 缓存会直接作为请求的响应.


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864