文档章节

http协议常用功能整理之web缓存

落叶刀
 落叶刀
发布于 2016/01/02 10:44
字数 1102
阅读 73
收藏 3

本部分内容整理于互联网

Web缓存:
WEB缓存(cache)位于Web服务器和客户端之间。 缓存会根据请求保存输出内容的副本,例如html页面,图片,文件,当下一个请求来到的时候:如果是相同的URL,缓存直接使用副本响应访问请求,而不是向源服务器再次发送请求。 HTTP协议定义了相关的消息头来使WEB缓存尽可能好的工作。

缓存的优点:
减少相应延迟:因为请求从缓存服务器(离客户端更近)而不是源服务器被相应,这个过程耗时更少,让web服务器看上去相应更快。 减少网络带宽消耗:当副本被重用时会减低客户端的带宽消耗;客户可以节省带宽费用,控制带宽的需求的增长并更易于管理。

缓存相关的HTTP扩展消息头:

Expires:指示响应内容过期的时间,格林威治时间GMT
Cache-Control:更细致的控制缓存的内容
Last-Modified:响应中资源最后一次修改的时间
ETag:响应中资源的校验值,在服务器上某个时段是唯一标识的。
Date:服务器的时间
If-Modified-Since:客户端存取的该资源最后一次修改的时间,同Last-Modified。
If-None-Match:客户端存取的该资源的检验值,同ETag。

客户端缓存生效的常见流程:
服务器收到请求时,会在200OK中回送该资源的Last-Modified和ETag头,客户端将该资源保存在cache中,并记录这两个属性。当客户端需要发送相同的请求时,会在请求中携带If-Modified-Since和If-None-Match两个头。两个头的值分别是响应中Last-Modified和ETag头的值。服务器通过这两个头判断本地资源未发生变化,客户端不需要重新下载,返回304响应

Web缓存机制:
HTTP/1.1中缓存的目的是为了在很多情况下减少发送请求,同时在许多情况下可以不需要发送完整响应。前者减少了网络回路的数量;HTTP利用一个“过期(expiration)”机制来为此目的。后者减少了网络应用的带宽;HTTP用“验证(validation)”机制来为此目的。 HTTP定义了3种缓存机制: 1)Freshness:允许一个回应消息可以在源服务器不被重新检查,并且可以由服务器和客户端来控制。例如,Expires回应头给了一个文档不可用的时间。Cache-Control中的max-age标识指明了缓存的最长时间; 2)Validation:用来检查以一个缓存的回应是否仍然可用。例如,如果一个回应有一个Last-Modified回应头,缓存能够使用If-Modified-Since来判断是否已改变,以便判断根据情况发送请求; 3)Invalidation: 在另一个请求通过缓存的时候,常常有一个副作用。例如,如果一个URL关联到一个缓存回应,但是其后跟着POST、PUT和DELETE的请求的话,缓存就会过期。

断点续传和多线程下载的实现原理:

HTTP协议的GET方法,支持只请求某个资源的某一部分;206 Partial Content 部分内容响应; Range 请求的资源范围; Content-Range 响应的资源范围; 在连接断开重连时,客户端只请求该资源未下载的部分,而不是重新请求整个资源,来实现断点续传。 分块请求资源实例: Eg1:Range: bytes=306302- :请求这个资源从306302个字节到末尾的部分; Eg2:Content-Range: bytes 306302-604047/604048:响应中指示携带的是该资源的第306302-604047的字节,该资源共604048个字节; 客户端通过并发的请求相同资源的不同片段,来实现对某个资源的并发分块下载。从而达到快速下载的目的。目前流行的FlashGet和迅雷基本都是这个原理。 多线程下载的原理:下载工具开启多个发出HTTP请求的线程; 每个http请求只请求资源文件的一部分:Content-Range: bytes 20000-40000/47000; 合并每个线程下载的文件。

© 著作权归作者所有

共有 人打赏支持
落叶刀
粉丝 38
博文 123
码字总数 105194
作品 2
浦东
运维
私信 提问
(JavaEE-03)HTTP协议

http协议 什么是http协议?客户端连上web服务器后,如果想获取web服务器中的某个web资源,就需要遵守一定的通讯格式,http协议就是用于定义客户端与服务器之间的通讯格式。 * http是hyperte...

_-Leon-_
2014/06/14
0
0
Web/HTTP 调试利器(Fiddler)

简述 Fiddler 是一个 http 协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的 http 通讯,设置断点,查看所有的“进出”Fiddler 的数据(指 cookie、html、js、css 等文件,这些...

潘志闻
2016/05/23
0
0
kali用Squid简单配置搭建http代理服务器

Squid - 代理服务器 Squid是一个全功能的Web代理缓存服务器应用程序,它为超文本传输协议(HTTP),文件传输协议(FTP)和其他流行的网络协议提供代理和缓存服务。 Squid可以实现缓存和代理安...

AsherWang
2016/12/01
0
0
httpClient4.2官方文档研究

前言 超文本传输协议(HTTP)也许是最常用的在互联网上使用的协议。 Web服务,支持网络设备和网络计算的增长继续扩大用户驱动的Web浏览器的HTTP协议之外的作用,同时增加了一些应用程序需要H...

harries
2015/08/24
0
0
http协议常用功能整理

本部分内容整理于互联网 HTTP定义: 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种无状态通信协议,它允许将超文本标记语言(HTML...

落叶刀
2016/01/02
74
0

没有更多内容

加载失败,请刷新页面

加载更多

生物智能与AI——关乎创造、关乎理解(上)

摘要: 原来人工智能跟人类智能有那么深的联系! 几百万年前,第一次人类智能的星火出现在非洲大陆,并且持续发展,最终在大约10万年前在智人的大脑中达到顶峰。作为现代人类,我们只能想象我...

阿里云官方博客
8分钟前
0
0
MiniUi系列 详情逻辑

row是获取的行的数据,通过id去查看对应id的详情,所有数据是在datagrid加载完后的,比如有5条,我可以选中某一条,我也可以把获取到的数据直接传到详情页面,仅就是追加row.xx,row.xx,这样就...

architect刘源源
9分钟前
0
0
android adb实用命令小结

adb的全称为Android Debug Bridge.是android司机经常用到的工具.但是问题是那么多命令写代码已经够费劲了,过段时间在次使用时压根记不住呀.本次的大餐就是为此开篇的.这一次我们不记命令.要用...

天王盖地虎626
13分钟前
0
0
vagrant 虚拟机 磁盘100%解决

在日常开发中,我使用vagrant+VirtualBox搭建开发环境 docker+docker-compose搭建了php+nginx+redis+mysql+ELK(Elasticsearch+Kibana+Logstash+php)+phpredisadmin 但是搭建了环境之后发现磁...

DamienChen
18分钟前
0
0
详解如何用爬虫批量抓取百度搜索多个关键字数据

本文介绍如何使用软件的流程图模式,免费采集百度搜索多个关键字的信息数据。 软件下载网址:www.houyicaiji.com 采集结果预览: 下面我们来详细介绍一下如何使用流程图模式,采集在百度输入...

技术阿飞
20分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部