HTTP 协议缓存】的更多相关文章

为什么要使用 Web 缓存 Web缓存一般分为浏览器缓存.代理服务器缓存以及网关缓存,本文主要讲的是 浏览器缓存,其它两种缓存大家自行去了解下. Web 缓存游走于服务器和客户端之间.这个服务器可能是源服务器(资源所驻留的服务器Add),数量可能是1个或多个:这个客户端也可能是1个或多个.Web 缓存就在服务器-客户端之间搞监控,监控请求,并且把请求输出的内容(例如html页面. 图片和文件)(统称为副本)另存一份:然后,如果下一个请求是相同的 URL,则直接请求保存的副本,而不是再次麻烦源服务…
一:HTTP协议缓存控制 第1次请求时 200 ok 第2次请求时 304 Not Modified 未修改状态 解释: 在网络上,有一些缓存服务器,另, 浏览器自身也有缓存功能. 当我们第一次某图片时,正常下载图片,返回值200 基于一个前提--图片不会经常改动, 服务器在返回200的同时,还返回该图片的”签名”-- Etag  ,(签名可以理解图片的”指纹”). 当浏览再次访问该图片时,去服务器校验”指纹”, 如果图片没有变化,直接使用缓存中的图片,这样减轻了服务器负担. 二:抓包观察分析…
最近在准备优化日志请求时遇到了一些令人疑惑的问题,比如为什么响应头里出现了两个 cache control.为什么明明设置了 no cache 却还是发请求,为什么多次访问时有时请求里带了 etag,有时又没有带?等等... 后来查了一些资料以及同事亲自验证,总算对这些问题有了个清晰的理解,现在整理出来以备忘. 1.缓存的分类 缓存分为服务端侧(server side,比如 Nginx.Apache)和客户端侧(client side,比如 web browser). 服务端缓存又分为 代理服务…
缓存的目 的是减少相应延迟 和 减少网络带宽消耗, 比如 css. js.图片这类静态资源应该进行缓存.实际项目 一般使用反向代理服务器(如 nginx. apache 等) 进行缓存. 关键字:cache-control, expire, if-none-match, if-modified-since, etag, last-modified 请求处理过程:当一个用户发起一个静态资源请求的时候,浏览器会通过以下几步来获取资源1.本地缓存阶段:先在本地查找该资源,如果有发现该资源,而且该资源还…
Etag是什么: Etag 是URL的Entity Tag,用于标示URL对象是否改变,区分不同语言和Session等等.具体内部含义是使服务器控制的,就像Cookie那样. HTTP协议规格说明定义ETag为"被请求变量的实体值" .另一种说法是,ETag是一个可以与Web资源关联的记号(token).典型的Web资源可以一个Web页,但也可能是JSON或XML文档.服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端. 实例详解: 也许读者们看完这个概念,还是…
1.缓存的分类 缓存分为服务端侧(server side,比如 Nginx.Apache)和客户端侧(client side,比如 web browser). 服务端缓存又分为 代理服务器缓存 和 反向代理服务器缓存(也叫网关缓存,比如 Nginx反向代理.Squid等),其实广泛使用的 CDN 也是一种服务端缓存,目的都是让用户的请求走"捷径",并且都是缓存图片.文件等静态资源. 客户端侧缓存一般指的是浏览器缓存,目的就是加速各种静态资源的访问,想想现在的大型网站,随便一个页面都是一…
1.URL 1.URL的作用 用于来表示任意一个资源的位置(互联网上). 协议+主机名+文件目录结构+文件名称 2.详解 格式: <scheme>://<user>:<pwd>@<host>:<port>/<path>:<params>?<query>#<frag> scheme:方案,协议,以哪种方式到服务器获取资源,协议不区分大小写,常用协议:http,https,ftp user:用户名 pw…
HTTP 协议中,缓存更多关心的文档资源的再利用.其目的是减少数据传输,加快相应速度等等.而对于缓存采用的是什么方案,也就是存在内存中还是硬盘中之类的问题,就属于另外的内容了. 假设,我身在广东,但是我访问的服务器在北京,在服务器其他条件一致的时候,我访问北京的服务器所需要的速度,肯定没有访问广东的服务器快.此时如果先访问靠近我的服务器,先看看我需要的资源有没有相应的副本,有就直接返回:没有就到源服务器中请求.这样响应速度肯定会快很多,而且也减轻了源服务器的压力.当然这里还有‘缓存命中率’和‘字…
1.缓存的分类 2.浏览器缓存机制详解 2.1 HTML Meta标签控制缓存 2.2 HTTP头信息控制缓存 2.2.1 浏览器请求流程 2.2.2 几个重要概念解释 3.用户行为与缓存 4.Refer: https://www.cnblogs.com/520yang/articles/4807408.html 最近在准备优化日志请求时遇到了一些令人疑惑的问题,比如为什么响应头里出现了两个 cache control.为什么明明设置了 no cache 却还是发请求,为什么多次访问时有时请求里…
http 缓存分为客户端缓存和服务端缓存 1. 客户端缓存 客户端缓存指的是浏览器缓存, 浏览器缓存是最快的缓存, 因为它直接从本地获取(但有可能需要发送一个请求), 它的优势是可以减少网络流量, 加快请求速度 2. 服务器缓存 服务器缓存指的是反向代理服务器或 cdn 缓存, 他的作用是用于减轻实际的 web server 的压力. 缓存生效都是通过 header 来控制的 1. Expires 如果 repsonse 中带有 Expires=date, 则表示这个 response 可以由…
缓存可以使用expire方式,设置到期时间,缓存的时间等于expire设置的时间减去当前的时间 也可以使用no-cache的方式进行缓存,当设置了no-cache的方式时,以no-cache的为准,expire不起作用 no-cache下常见的有no-store,no-cache,max-age,must-revalidate no-store,不做缓存,每次返回200,拉取最新的资源 no-cache缓存一份,每次会读取最新的缓存内容 max-age配合must-revalidate使用,每次…
缓存的概念 缓存这个东西真的是无处不在, 有浏览器端的缓存, 有服务器端的缓存,有代理服务器的缓存, 有ASP.NET页面缓存,对象缓存. 数据库也有缓存, 等等. http中具有缓存功能的是浏览器缓存,以及缓存代理服务器. http缓存的是指:当Web请求抵达缓存时, 如果本地有“已缓存的”副本,就可以从本地存储设备而不是从原始服务器中提取这个文档. 缓存的好处 缓存的好处是显而易见的, 好处有, 1. 减少了冗余的数据传输,节省了网费. 2. 减少了服务器的负担, 大大提高了网站的性能 3.…
首先介绍一下HTTP的报文信息,主要分成两个部分 1.包含属性的首部(header)---------------附加信息(cookie,缓存信息等)与缓存相关的规则信息,均包含在header中 2.包含数据的主体部分(body)-----------HTTP请求真正想要传输的部分 常见的http缓存只能缓存get请求响应的资源. HTTP缓存都是从第二次请求开始的.第一次请求资源时,服务器返回资源,并在respone header头中回传资源的缓存参数:第二次请求时,浏览器判断这些请求参数,命…
HTTP的缓存 至于响应消息的实体,与请求消息的实体内容相似,这里只借绍下User-Agent头 User-Agent头域的内容包含发出请求的用户信息. Cache-Control头域(请求和应答通用头域) Cache-Control指定请求和响应遵循的缓存机制.在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存 处理过程.请求时的缓存指令包括no-cache.no-store.max-age.max-stale.min-fresh.only-if- cac…
CPU缓存一致性协议MESI CPU高速缓存(Cache Memory) CPU为何要有高速缓存 CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU.这就造成了高性能能的内存和硬盘价格及其昂贵.然而CPU的高度运算需要高速的数据.为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题. 在CPU访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就被称为局部性原理. 时间局部性…
浏览器缓存机制 浏览器缓存机制主要是 HTTP 协议定义的缓存机制. HTTP 协议中有关缓存的缓存信息头的关键字有 Cache-Control,Pragma,Expires,Last-Modified/ETag 等.   浏览器请求流程 浏览器第一请求流程:    …
CPU高速缓存(Cache Memory) CPU为何要有高速缓存 CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU.这就造成了高性能能的内存和硬盘价格及其昂贵.然而CPU的高度运算需要高速的数据.为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题. 在CPU访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就被称为局部性原理. 时间局部性(Temporal Local…
在目前主流的计算机中,cpu执行计算的主要流程如图所示: 数据加载的流程如下: 1.将程序和数据从硬盘加载到内存中 2.将程序和数据从内存加载到缓存中(目前多三级缓存,数据加载顺序:L3->L2->L1) 3.CPU将缓存中的数据加载到寄存器中,并进行运算 4.CPU会将数据刷新回缓存,并在一定的时间周期之后刷新回内存 缓存一致性协议发展背景现在的CPU基本都是多核CPU,服务器更是提供了多CPU的支持,而每个核心也都有自己独立的缓存,当多个核心同时操作多个线程对同一个数据进行更新时,如果核心…
前言 事情是这样的,一位读者看了我的一篇文章,不认同我文章里面的观点,于是有了下面的交流. 可能是我发的那个狗头的表情,让这位读者认为我不尊重他.于是,这位读者一气之下把我删掉了,在删好友之前,还叫我回家种田. 说实话,你说我菜我是承认的,但你要我回家种田,我不理解.为什么要回家种田呢?养猪不比种田赚钱吗? 我想了很久没有想明白,突然,我看到了这个新闻,瞬间明白了读者的用心良苦. 于是,我决定写下这篇文章,好好地分析一下读者提出的几个问题. 读者的观点 针对这位读者的几个观点: volatile…
以前项目中遇到了很多浏览器缓存相关的问题,也在网上查过资料,搞过服务器的配置,来确保客户端加载服务器资源的速度和资源有效性.最近仔细看了下http协议中和缓存相关的一些属性,总结一下. 浏览器缓存原理 文字版描述 ①浏览器第一次访问服务器资源 /index.html 在浏览器中没有缓存文件,直接向服务器发送请求. 服务器返回  200 OK,实体中返回 index.html文件内容,并设置一个缓存过期时间,一个文件修改时间,一个根据index.html内容计算出来的实体标记Entity Tag,…
因最近客户端慢的问题,系统分析了下http协议缓存问题.本文主要记录总结http缓存相关知识. 1. 讨论涉及的要点 访问返回类 > 访问返回200 OK > 访问返回200 (from memory cache) > 访问返回200 (from disk cache) > 访问返回304 Not Modified 头设置类 > Cache-Control: max-age=604800 > Expires: Thu, 05 Jan 2017 12:24:24 GMT…
转自:http://www.cnblogs.com/tzyy/p/4908165.html 浏览器缓存原理: 1.浏览器第一次访问服务器资源/index.html,在浏览器中没有缓存文件,直接向服务器发送请求,服务器返回200 OK 实体中返回index.html文件内容,并设置一个缓存过期时间,一个文件修改时间,一个根据index.html内容计算出来的实体标记Entity Tag简称ETag,浏览器将/index.html路径的请求缓存到本地 2.浏览器第二次访问服务资源/index.htm…
章节目录 浏览器缓存原理 文字版描述 一图以蔽之 缓存相关首部字段 request缓存相关首部字段 response缓存相关首部字段 实体首部缓存相关字段 缓存配置的一些注意事项 以前项目中遇到了很多浏览器缓存相关的问题,也在网上查过资料,搞过服务器的配置,来确保客户端加载服务器资源的速度和资源有效性.最近仔细看了下http协议中和缓存相关的一些属性,总结一下. 浏览器缓存原理 文字版描述 ①浏览器第一次访问服务器资源 /index.html 在浏览器中没有缓存文件,直接向服务器发送请求. 服务…
概述 TCP/IP协议族,作为最早的协议模型(后来OSI七层也是在该基础上细分而来),每层都有一些重点的协议,面试时也会被询问,快要找工作,得做一些总结了 [1]TCP4层协议模型概述 [2]各层重点协议介绍 1.TCP4层协议模型概述 TCP与OSI对比图 其中Tcp各层重点协议如下图所示 网络层协议包括: [1]IP(Internet Protocol)协议 IP是网络层的核心,通过路由选择将下一条IP封装后交给接口层.IP数据报是无连接服务. [2]ICMP(Internet Contro…
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/qHm_dJBhVbv0pJs8Crp77w 作者:叶建升 个人主页:http://www.linkedin.com/in/jiansheng-ye-b3319778/ 导语 在web项目开发中,我们可能都曾碰到过这样一个棘手的问题: 线上项目需要更新一个有问题的资源(可能是图片,js,css,json数据等),这个资源已经发布了很长一段时间,为什么页…
先来一个整体图 一. 大致关系: CPU Cache --> 前端总线 FSB (下图中的Bus) --> Memory 内存 CPU 为了更快的执行代码.于是当从内存中读取数据时,并不是只读自己想要的部分.而是读取足够的字节来填入高速缓存行.根据不同的 CPU ,高速缓存行大小不同.如 X86 是 32BYTES ,而 ALPHA 是 64BYTES .并且始终在第 32 个字节或第 64 个字节处对齐.这样,当 CPU 访问相邻的数据时,就不必每次都从内存中读取,提高了速度. 因为访问内存…
时间:2016-12-12 17:51:30 作者: zhongxia 零.前言 这里主要写的是理论,具体实践的比较少,后期写一个实践教程,内容基本都是从参考文章里面抄过来的[看完文章,顺便写做下笔记,加深理解.] 浏览器缓存,也就是客户端缓存,既是网页性能优化里面静态资源相关优化的一大利器,也是无数web开发人员在工作过程不可避免的一大问题,所以在产品开发的时候我们总是想办法避免缓存产生,而在产品发布之时又在想策略管理缓存提升网页的访问速度. 了解浏览器的缓存命中原理,是开发web应用的基础,…
为什么要用缓存 一般针对静态资源如CSS,JS,图片等使用缓存,原因如下: 请求更快:通过将内容缓存在本地浏览器或距离最近的缓存服务器(如CDN),在不影响网站交互的前提下可以大大加快网站加载速度. 节省带宽:对于已缓存的文件,可以减少请求带宽甚至无需请求网络. 降低服务器压力:在大量用户并发请求的情况下,服务器的性能受到限制,此时将一些静态资源放置在网络的多个节点,可以起到均衡负载的作用,降低服务器的压力. 缓存分类 缓存分为服务端侧(server side,比如 Nginx.Apache)和…
[原文]https://www.toutiao.com/i6592743068623962632/ 1. 前端缓存概述 前端缓存主要是分为HTTP缓存和浏览器缓存.其中HTTP缓存是在HTTP请求传输时用到的缓存,主要在服务器代码上设置:而浏览器缓存则主要由前端开发在前端js上进行设置.下面会分别具体描述. 2. 前端缓存分类 2.1 HTTP缓存 整体流程 HTTP缓存都是从第二次请求开始的. 第一次请求资源时,服务器返回资源,并在respone header头中回传资源的缓存参数:第二次请求…
在web项目开发中,我们可能都曾碰到过这样一个棘手的问题: 线上项目需要更新一个有问题的资源(可能是图片,js,css,json数据等),这个资源已经发布了很长一段时间,为什么页面在浏览器里打开还是没有看到更新? 有些web开发经验的同学应该马上会想到,可能是资源发布出了岔子导致没有实际发布成功,更大的可能是老的资源被缓存了.说到web缓存,首先我们要弄清它是什么.Web缓存可以理解为Web资源在Web服务器和客户端(浏览器)的副本,其作用体现在减少网络带宽消耗.降低服务器压力和减少网络延迟,加…