1. HTTP并不支持兄弟缓存,所以人们通过一些协议对HTTP进行了扩展,比如因特网缓存协议(Internet Cache Protocol, ICP)和超文本缓存协议(HyperText Caching Protocol, HTCP)。

2.  缓存的处理步骤

  • 接收;
  • 解析;
  • 查找,专业级的缓存会使用快速算法来确定本地缓存中是否有某个对象。
  • 新鲜度检测,http有一组非常复杂的新鲜度检测规则,缓存产品支持的大量配置选项。Http有一些简单的机制可以在不要求服务器记住有哪些缓存拥有其文档副本的情况下,保持已缓存数据与服务器数据之间充分一直。HTTP将这些简单的机制称为文档过期(document expiration)和服务器再验证(server revalidation)
  1. 文档过期:http首部 cache-Control:max-age = 23s(指定一个相对的日期,HTTP/1.1)和Expires(指定一个绝对的日期,HTTP/1.0+)。
  2. 服务器再验证:仅仅是已缓存文档过期了并不意味着他和原始服务器上目前处于活跃状态的文档有实际的区别;这只是意味着到了要进行核对的时间了。这种情况被称为“服务器再验证”,说明缓存需要询问原始服务器文档是否发生了变化。用条件方法进行再验证:HTTP允许缓存想原始服务器发送一个“条件 GET”,请求服务器只有在文档和缓存中现有的副本不相同时,才回送对象主体。通过这种方法,将新鲜度检测和对象获取结合成了单个条件GET。 HTTP定义了5个提哦啊及那请求首部。对缓存再验证来说最有用的两个首部是If-Modified-Since和If-None-Match(其他首部包括, if-Unmodified-Since, If-Range, If-Match)。说有条件首部都以If-开头。缓存验证器(cache validater)
    • If-Modified-Since+date.
    • If-None-Match,实体标签再验证。有些情况下仅适用最后修改日期进行再验证是不够的。HTTP允许用户对被称为实体标签(ETag)的“版本标识符”进行比较。实体标签是附加在文档上的任意标签(引用字符串)。If-None-Match+version information。
    • 强弱验证器(HTTP/1.1支持弱验证器)。弱验证器允许对一些内容做出了修改。但内容的主要含义发生变化时,通常他还是会发生变化。用”W/“来标示弱验证器。
  • 创建响应;
  • 发送;
  • 日志。

3. 控制缓存的能力

服务器可以通过HTTP定义的几种方式来指定在文档过期之前可以将其缓存多长时间。按照优先级递减的顺序,服务器可以首部到响应中去。

  • no-Store与no-Cache响应首部(eg. Cache-Control:no-Store; Cache-Control:no-Cache),标示no-Store的响应会禁止响应对缓存进行复制。缓存通常会像缓存代理服务器一样,向客户端转发一条no-store响应,然后删除对象。标识为no-Cache的响应实际上是可以存储在本地缓存区中的。只是在与原始服务器进行再验证之前,缓存不能够提供给客户端使用。HTTP/1.1中提供Pragma:no-Cache首部是为了兼容HTTP/1.0+。HTTP/1.1应该用Cache-Control:no-Cache。
  • max-age响应首部(Cache-Control:max-age)
  • expires响应首部(Cache-Control:Expires),指定的是实际的过期日期。
  • must-revalidate
  • 试探性过期

转载于:https://www.cnblogs.com/hongdanning/p/4597555.html

【WEB HTTP】缓存相关推荐

  1. Web的缓存加速(Squid的安装与配置)

    [Web的缓存加速(Squid的安装与配置)] 1.Squid代理服务器基础知识 默认端口3128 1.1代理形式 传统代理 (正向代理) 适用于Internet正向代理,需在客户机指定代理服务器的地 ...

  2. web服务器缓存(二)

    通过(一),我们学会了配置Apache的cache模块,测试了静态文件的缓存,静态文件成功被web服务器"捕获",生成了缓存文件,但是我们更关心的是动态文件,因为它比静态文件更加消 ...

  3. web cache缓存原理

    1.1 缓存解释 缓存通常是基于键值对来缓存的,键通过hash计算后,存放于内存某个空间,所以键可以理解为索引.而值是存放在内存空间或是磁盘空间上. 当用户的用户请求送达至Web服务器,Web服务器会 ...

  4. varnish---反向代理web加速缓存服务器和CDN的推送

    Varnish 简介 Varnish 是一款高性能且开源的反向代理服务器和 HTTP 加速器,其采用全新的软件体系机构,和现在的硬件体系紧密配合,与传统的 squid 相比,varnish 具有性能更 ...

  5. Web Service 缓存

    由于微软的Web service实现是基于Asp.net,所以会出现缓存也就在情理之中了.主要有2中缓存:输出缓存和数据缓存.由于Web Service的缓存管理与asp.net基本是一样的,就不说他 ...

  6. html本地缓存未查看信息,不同用户看到了相同的信息-一次web系统缓存问题的解决...

    最近负责的系统总是出现奇怪的缓存问题,在这里简单记录一下碰到的问题和踩到的坑. 问题:用户反映使用不同账号A,B登录时,都出现账号A的页面信息(未邮寄账单提示).如下所示: 图1:未邮寄账单提示 一  ...

  7. ASP.NET Cache缓存管理基于web的缓存

    <%@ OutputCache Location="Any" 输出缓存可以位于发出请求的客户端浏览器,代理服务器,处理请求的服务器,对应于HttpCacheability.p ...

  8. web内容缓存 nginx高性能缓存详解

    内容缓存是显著提高web站点的性能最有效的方法之一.下面来说说nginx高性能缓存. 内容缓存的基本原则 对GET请求进行缓存. 使用:浏览器缓存,内容分发网络和/或反向代理缓存. HTTP缓存机制: ...

  9. Web端-缓存数据及user_agent修改

    本文以Google浏览器为样例,针对各种缓存数据做修改进行测试,若有修改的更好方式,各位大佬多多指教~ Cookie修改 前提条件:允许浏览器缓存数据 1.使用浏览器自带的F12来修改参数 2.切换到 ...

  10. html5缓存的功能,HTML 5新特性:Web应用缓存实现离线浏览

    HTML5 IndexedDB:轻量级NoSQL数据库 IndexedDB是HTML5-WebStorage的重要一环,是一种轻量级NoSQL数据库. w3c为IndexedDB定义了很多接口,其中D ...

最新文章

  1. App Store 申请审核加速
  2. python的.arsort()函数的用法
  3. h5分享到朋友圈_微信朋友圈创意招聘广告制作方法 H5模板
  4. C++派生类对象和基类对象赋值
  5. 代码更换ui图片_不同人眼中的UI设计师都是什么样的?
  6. Android Studio导入project和module的方法
  7. Android应用性能优化之优化列表头像过度绘制[一]
  8. 《Python游戏趣味编程》 第4章 疯狂的小圆圈
  9. Spring IOC基础概念总结:何为控制?何为反转?控制了什么?反转了哪里?
  10. leetcode——Divide Two Integers
  11. android 8 ldac,小米Android 8.0机型支持LDAC功能
  12. 完整版第四方Oreo易支付源码+28K易支付源码
  13. 如何压缩图片呢?这两种方法很管用
  14. Java Web基础知识之文件上传:文件上传一窥究竟
  15. 品味奢华 匠心独韵——飞利浦Fidelio T1设计与声音的哲学
  16. 带你初步了解基因表达调控
  17. solr常见问题整理
  18. 成都普陀计算机学校,成都智慧校园软件
  19. Python与seo工具脚本,360/搜狗相关搜索词采集源码参考
  20. Unity 时间管理工具

热门文章

  1. SpringBoot 嵌入式Servlet容器
  2. STM32开发 -- 数据搜索
  3. PAT——程序运行时间 (1026)
  4. 【译】 Diving Into The Ethereum VM Part 6 - How Solidity Events Are Implemented
  5. Android Studio中引入RecyclerView的v7包
  6. popup java_PoPup
  7. JZOJ 5691. 【GDOI2018Day2模拟4.25】求和
  8. JZOJ 3815. 【NOIP2014模拟9.7】克卜勒
  9. android必须服务,说说在Android如何使用服务(Service)的方法
  10. linux中查找某一个字符串,Linux系统下,在文件中查找某个字符串