热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

http协议_http协议的缓存

篇首语:本文由编程笔记#小编为大家整理,主要介绍了http协议的缓存相关的知识,希望对你有一定的参考价值。1.Cache-Controlresponse.s

篇首语:本文由编程笔记#小编为大家整理,主要介绍了http协议的缓存相关的知识,希望对你有一定的参考价值。


1.Cache-Control

response.setHeader(‘Cache-Control‘,‘public,max-age=360‘)

//服务器在响应时,回传max-age参数,表示缓存时间:xx秒,那么客户端在下次请求时,根据上次回传的max-age值,

//首先判断缓存的相对时间,如果还未超过时间,则不发起请求,直接从Cache中读取。反之,则重新请求。

 

2.Expires

response.setHeader(‘Expires‘,‘Mon Jan 01 2018 08:00:00 GMT‘) //必须用格林威治时间格式

//服务器在响应时,回传格林威治时间,表示在次时间内的请求直接从Cache中读取

//那么客户端在下次请求时,根据上次回传的时间,比对客户端本地时间,

//如果本地时间未超过回传时间,则不发起请求,直接从Cache中读取。反之,则重新请求。

//缺陷:由于返回的时间比对的是客户端本地时间,如果本地时钟修改,则会导致缓存出现异常

 

3.Last-Modified

response.setHeader(‘Last-Modified‘,‘Fri,22 Jul 2016 08:00:00 GMT‘)

//服务器在响应时,同样回传格林威治时间,不同的是,它表示的是服务器最新一次对页面修改的时间

//那么客户端在下次请求时,会通过If-Modified-Since: Last-Modified-value带上之前回传回来的时间

//如果客户端传来的最后修改时间与服务器上的依然一致,则直接回送304 和响应报头即可。

//如果没有匹配上,说明服务器已对页面做了修改,则重新相应新的页面并回传新的Last-Modified

//缺陷:

a、只要资源修改,无论内容是否发生实质性的变化,都会将该资源返回客户端。例如周期性重写,这种情况下该资源包含的数据实际上一样的。

b、以时刻作为标识,无法识别一秒内进行多次修改的情况。

c、某些服务器不能精确的得到文件的最后修改时间。

 

4.ETag

response.setHeader(‘ETag‘,‘3fd729c07839068ebb6f7f4374981d9f‘) //一般可用MD5

//服务器在响应时,回传一个唯一标志符(比如md5),服务器在把页面响应给客户端的时候,会在实体首部加上“ETag: 唯一标识符”一起返回给客户端

//客服端会保留ETag字段,在下次请求时,通过在请求中添加if-none-match:ETag-value 给服务器,与服务器的ETag字段进行匹配,如果匹配上,则直接回送304 和响应报头即可。反之,则重新发送资源数据并回传新的ETag字段  


推荐阅读
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • Android开发技巧:使用IconFont减少应用体积
    本文介绍如何在Android应用中使用IconFont来显示图标,从而有效减少应用的体积。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
  • 在《Linux高性能服务器编程》一书中,第3.2节深入探讨了TCP报头的结构与功能。TCP报头是每个TCP数据段中不可或缺的部分,它不仅包含了源端口和目的端口的信息,还负责管理TCP连接的状态和控制。本节内容详尽地解析了TCP报头的各项字段及其作用,为读者提供了深入理解TCP协议的基础。 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • 单片机入门指南:基础理论与实践
    本文介绍了单片机的基础知识及其应用。单片机是一种将微处理器(类似于CPU)、存储器(类似硬盘和内存)以及多种输入输出接口集成在一块硅片上的微型计算机系统。通过详细解析其内部结构和功能,帮助初学者快速掌握单片机的基本原理和实际操作方法。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
author-avatar
淘宝_韩版女装铺
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有