缓存保持副本的新鲜 ========================摘自<HTTP权威指南>================================= 可能不是所有已缓存副本都与服务器上的文档一致.毕竟,这些文档会随着时间发生变化.报告可能每个月都会发生变化.在线报纸每天都会发生变化.财经数据可能每过几秒就会发生变化.如果缓存总是提供的老数据,就会变得毫无用处.已缓存的数据要与服务器的数据保持一致. HTTP有一些简单的机制可以在不要求服务器记住有哪些缓存拥有文档副本的情况下,保持已缓…
前面的话 Web缓存是可以自动保存常见文档副本的HTTP设备.当Web请求抵达缓存时,如果本地有“已缓存的”副本,就可以从本地存储设备而不是原始服务器中提取这个文档.本文将详细介绍缓存的相关内容 功能 总的来说,缓存有以下四个功能:缓存减少了冗余的数据传输,节省了网络费用:缓解了网络瓶颈的问题,不需要更多的带宽就能够更快地加载页面:降低了对原始服务器的要求,服务器可以更快地响应,避免过载的出现:降低了距离时延,因为从较远的地方加载页面会更慢一些 [冗余的数据传输] 有很多客户端访问一个流行的原始…
本文是<HTTP权威指南>读书笔记 Web缓存是可以自动保存常见文档副本的设备.当Web请求抵达缓存时,如果本地在“已缓存”的的副本,就可以从本地存储设备而不是原始服务器中提取这个文档.使用缓存可以有以下优点: 缓存节省了冗余的数据的传输,节省了网络费用: 缓解了网络瓶颈问题,不需要更多的带宽就可以更快地加载页面: 缓存降低了对原始服务器的要求, 让服务器可以快速的响应,避免过载出现: 缓存降低了距离时延: 但缓存不能保存世界上每一份文档的副本,因此会出现两种情况:可以用已有副本为某些到达缓存…
转自:http://www.path8.net/tn/archives/2745 缓存对于web开发有重要作用,尤其是大负荷web系统开发中. 缓存分很多种:服务器缓存,第三方缓存,浏览器缓存等.其中浏览器缓存是代价最小的,因为浏览器缓存依赖的是客户 端,而几乎不耗费服务器端的资源. 让浏览器做缓存需要给浏览器发送指定的Http头,告诉浏览器缓存多长时间,或者坚决不要缓存. 1.Expires(过期时间)HTTP头信息Expires(过期时间) 属性是HTTP控制缓存的基本手段,这个属性告诉缓存…
7.1 冗余的数据传输 缓存的作用:当客户端每次访问服务器,服务器都会返回一份相同文件,一些相同的字节会不断的在网络内传输,这样冗余的数据传输会耗尽昂贵的带宽,降低传输速度,加重Web服务器的负载. 有了缓存就可以保留第一条服务器发送的文件副本,后继请求就可以用缓存的副本文件响应,减少流入/流出服务器的数据,降低被浪费的流量. 7.2 传输瓶颈 7.2.1 带宽:带宽越宽,传输越快 7.2.2 瞬间拥塞:突发事件,重要新闻会导致很多客户端访问同一个服务器,容易造成瞬间拥塞 7.2.3 距离时延:…
1.客户端如何区分缓存命中和未命中 两种情况下,返回的状态码都是200,客户端有一个方法可以判断,就是使用Date首部,将Date首部与当前时间进行比较,如果响应中时间日期值比较早,客户端可以认为这是缓存响应,也可以通过Age首部来检测,效果是一样的. 2.Age和Date的区别 Date:Date头域表示消息发送的时间,时间的描述格式由rfc822定义.例如,Date: Mon,31 Dec 2001 04:25:57GMT. Age:当代理服务器用自己缓存的实体去响应请求时,用该头部表明该实…
上一章介绍了缓存新鲜度判断的基本原理,本章对于缓存新鲜度判断方法进行一些补充(更新间隔略长略长..). 关于缓存的TIPS 服务器可以通过http定义的几种header对可以缓存数据的存在时间进行控制,按照其优先级由高到低分别为: Cache-Control:no-store Cache-Control:no-cache Cache-Control:must-revalidata Cache-Control:  max-age= Expires:{date} 不附加任何信息 Cache-Cont…
本文翻译自: https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching ,主要用于个人记录和共享,若有疏漏错误,请不吝指正,谢谢! 通过重用已获取的资源,可大幅提高web站点和应用的性能.由于web缓存减少了延迟和网络流量,因此缩短了展示一个资源所需的时间.通过使用HTTP缓存机制,web站点可实现更快更灵活的响应. 不同类型的缓存 缓存是一种保存资源副本并在下次请求时直接使用该副本的技术.当发起一个请求时,web缓存会判断是否已有此请求…
分布式缓存出于如下考虑,首先是缓存本身的水平线性扩展问题,其次是缓存大 并发下的本身的性能问题,再次避免缓存的单点故障问题(多副本和副本一致性).分布式缓存的核心技术包括首先是内存本身的管理问题,包括了内存的分配,管 理和回收机制.其次是分布式管理和分布式算法,其次是缓存键值管理和路由. 什么是Memcached 许多Web 应用程序都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示.但随着数据量的增大,访问的集中,就会出现REBMS的负担加重,数据库 响应恶化,网站显示延迟等重…
ATS缓存数据结构 HttpTunnel类 数据传输驱动器(data transfer driver),包含一个生产者(producer)集合,每个生产者连接到一个或是多个消费者(comsumer).隧道(tunnel)处理事件和缓冲区以便数据能从生产者移动到消费者,数据会尽可能保存在引用计数类型的缓冲区中.只有数据发生变动,或者在数据源(它从ATS外部获取数据)和数据接收端(它将数据发送到ATS外部)的情况下,才会发生拷贝操作. HTTPCacheAlt类 定义在HTTP.h中,它是一个缓存对…
其实这些微软docs都有现成的,但是现在的人想对浮躁些,去看的不会太多,所以这里就再记录下 ,大家一起懒一起浮躁,呵呵. 0.基础知识 通过减少生成内容所需的工作,缓存可以显著提高应用的性能和可伸缩性. 缓存对不经常更改的数据效果最佳. 缓存生成的数据副本的返回速度可以比从原始源返回更快. 在编写并测试应用时,应避免依赖缓存的数据.ASP.NET Core 支持多种不同的缓存. 最简单的缓存基于 IMemoryCache,它表示存储在 Web 服务器内存中的缓存. 在包含多个服务器的服务器场上运…
通过减少生成内容所需的工作,缓存可以显著提高应用的性能和可伸缩性,缓存对不经常更改的数据效果最佳,缓存生成的数据副本的返回速度可以比从原始源返回更快.ASP.NET Core 支持多种不同的缓存,最简单的缓存基于 IMemoryCache,它表示存储在 Web 服务器内存中的缓存. 在包含多个服务器的场合,要保证缓存数据的一致性,这个时候需要分布式缓存,也就是把数据从缓存内存中保存到外部缓存服务器中,例如reids,云等,内存中和分布式缓存将缓存项存储为键 / 值对. 创建.net core项目…
前言:   最近面试时,问到了限定并发数的视频下载,当时回答的时通过GCD_barrier 处理,回来想想也可以通过NSCache处理,所以顺便复习一下,这个知识点. 一,关于NSCache说明 说明文档: @interface NSCache : NSObject Description A mutable collection you use to temporarily store transient key-value pairs that are subject to eviction…
什么是缓存 Cache? 缓存位于客户端与服务器之间, 或者服务器与服务器之间.它决定是否保存所获资源的副本,以及如何使用副本,何时更新副本,这里所说的资源包括页面的HTML, 图片,文件等等. 使用缓存主要有2大理由: 减少响应延迟,让页面显示更快:因为缓存比源服务器离客户端更近, 如果直接从缓存而不是源服务器响应客户的请求,耗时更少,让网站看上去响应更快: 减少网络带宽消耗:当副本被重用时,减少了从源服务器获取资源的次数,从而减少带宽消耗. 缓存如何工作? 所有的缓存都遵循以下基本规则 保留…
缓存的定义 Web缓存是可以自动保存常见文档副本的HTTP设备(包括浏览器?) 缓存的作用 减少冗余数据传输 缓解带宽瓶颈(很多网络为本地网络客户端提供的带宽比为远程服务器提供的带宽要宽) 缓解瞬时拥塞(不会所有的请求都奔着一台服务器去) 降低距离时延(就近访问么) 命中.非命中 命中率:请求命中缓存的比例 字节命中率:请求命中缓存的文档,其文档大小总和,占所有请求大小总和的比例(一些大文档尽管访问少,但对流量贡献大,对于按流量计费的人来说很重要) 客户端如何判断请求是否命中缓存:它能够过Dat…
这是一篇知识性的文档,主要目的是为了让Web缓存相关概念更容易被开发者理解并应用于实际的应用环境中.为了简要起见,某些实现方面的细节被简化或省略了.如果你更关心细节实现则完全不必耐心看完本文,后面参考文档和更多深入阅读部分可能是你更需要的内容. 什么是Web缓存,为什么要使用它? 缓存的类型: 浏览器缓存: 代理服务器缓存: Web缓存无害吗?为什么要鼓励缓存? Web缓存如何工作: 如何控制(控制不)缓存: HTML Meta标签 vs. HTTP头信息: Pragma HTTP头信息(为什么…
这是一篇转载的知识性的文档,主要目的是为了让Web缓存相关概念更容易被开发者理解并应用于实际的应用环境中.为了简要起见,某些实现方面的细节被简化或省略了.如果你更关心细节实现则完全不必耐心看完本文,后面参考文档和更多深入阅读部分可能是你更需要的内容.什么是Web缓存,为什么要使用它?缓存的类型: 浏览器缓存:代理服务器缓存:Web缓存无害吗?为什么要鼓励缓存?Web缓存如何工作:如何控制(控制不)缓存: HTML Meta标签 vs. HTTP头信息:Pragma HTTP头信息(为什么不起作用…
[我的理解]页面缓存常用在网站上.Web应用系统上也用,但由于Web系统常与数据库打交道.时效性要求蛮强的,所以是否能用缓存得具体情况具体分析(很喜欢这句话“具体情况具体分析”,很符合国人的中庸之道) [我是怎么用的] <%@ OutputCache CacheProfile="test" VaryByParam="none" %> 参数分析: <!--输出缓存 时间20s varyparams:定义的缓存方式,有下面几中值 none asp.ne…
这是一篇知识性的文档,主要目的是为了让Web缓存相关概念更容易被开发者理解并应用于实际的应用环境中.为了简要起见,某些实现方面的细节被简化或省略了.如果你更关心细节实现则完全不必耐心看完本文,后面参考文档和更多深入阅读部分可能是你更需要的内容. 什么是Web缓存,为什么要使用它? Web缓存位于Web服务器之间(1个或多个,内容源服务器)和客户端之间(1个或多个):缓存会根据进来的请求保存输出内容的副本,例如html页面, 图片,文件(统称为副本),然后,当下一个请求来到的时候:如果是相同的UR…
了解缓存层次结构 缓存层次结构由彼此通信的缓存级别组成.ats支持多种类型的缓存层次结构. 所有缓存层次结构都识别父和子的概念. 父缓存是层次结构中较高的缓存, ats可以 将请求转发到该缓存.子缓存是ats作为父缓存的缓存. Parent Caching 如果ats节点无法在其缓存中找到请求的对象,则它会在最终从源服务器检索对象 之前搜索父缓存(它本身可以搜索其它缓存). 可以将ats节点配置为使用多个父缓存,以 便在一个父缓存不可用时,将依次检查其他父缓存,直到请求得到正确服务或者没有 其它…
HTTP缓存是个大公司面试几乎必考的问题,写篇随笔说一下HTTP缓存. 1. HTTP报文首部中有关缓存的字段 在HTTP报文中,与缓存相关的信息都存在首部里,简单说一下首部. 首部 HTTP首部字段向请求报文和相应报文中添加了一些附加信息.本质上来说,它们只是一些键值对的列表.比如,下面的首部行会向Content-Length首部字段赋值19: Content-Length: 19 HTTP规范定义了几中首部字段.应用程序也可以随意发明自己所用的首部.HTTP首部可以分为以下几类: 通用首部…
对于web服务器(软件)大家应该不会陌生,常见的web服务器有Apache.IIS.Tomcat.Nginx.Jetty等等. 1.基本功能 几乎所有的web服务器都会执行以下几项同样的任务: 1.建立连接:接受一个客户端连接,或者将其关闭: 2.接收请求:从网络中读取一条HTTP请求报文: 3.处理请求:对请求报文进行解释,并采取行动: 4.访问资源:访问报文中指定的资源: 5.构建响应:创建带有正确首部的HTTP响应报文: 6.发送响应:将响应回送给客户端: 7.记录日志:将事务处理记录在一…
<浅谈HTPP缓存>原版: https://juejin.im/post/5bdeabbbe51d4505466cd741?utm_source=gold_browser_extension 这篇文章写得太好了,满满干货 于是转载过: 不过这篇文章只是介绍了缓存的方式,没有讲缓存的前后端实现,于是我在该文章基础上,增加了前后端 缓存的实现方法. 内容概述 什么是缓存及缓存的优点 缓存的处理步骤 强缓存和协商缓存 缓存决策 总结与思考 一.缓存及其优点 缓存 缓存是一种可以自动保存常见资源副本并…
1. HTTP并不支持兄弟缓存,所以人们通过一些协议对HTTP进行了扩展,比如因特网缓存协议(Internet Cache Protocol, ICP)和超文本缓存协议(HyperText Caching Protocol, HTCP). 2.  缓存的处理步骤 接收: 解析: 查找,专业级的缓存会使用快速算法来确定本地缓存中是否有某个对象. 新鲜度检测,http有一组非常复杂的新鲜度检测规则,缓存产品支持的大量配置选项.Http有一些简单的机制可以在不要求服务器记住有哪些缓存拥有其文档副本的情…
这是一篇知识性的文档,主要目的是为了让Web缓存相关概念更容易被开发者理解并应用于实际的应用环境中.为了简要起见,某些实现方面的细节被简化或省略了.如果你更关心细节实现则完全不必耐心看完本文,后面参考文档和更多深入阅读部分可能是你更需要的内容. 什么是Web缓存,为什么要使用它? 缓存的类型: 浏览器缓存: 代理服务器缓存: Web缓存无害吗?为什么要鼓励缓存? Web缓存如何工作: 如何控制(控制不)缓存: HTML Meta标签 vs. HTTP头信息: Pragma HTTP头信息(为什么…
缓存的级别 缓存的作用自不必说,提高系统性能最重要的手段之一.上至应用框架,下至文件系统乃至CPU,计算机中各部分设计都能见到缓存的身影.许多朋友一直在追求如何提高Web应用程序的性能,其实最容易被理解和采纳的一条估计就是“缓存”了.也正因为如此Live Journal才会开发出memcached,而微软也推出了Velocity. 有朋友说生成静态页?好吧,在老赵看来,其实这只是把页面内容缓存至硬盘罢了.不过这就涉及到了缓存的某些“级别”了.撇开硬件(如CPU)和系统(例如文件系统,数据库系统)…
 什么是缓存? 缓存(Web缓存)是指代理服务器和客户端本地磁盘保存的资源副本.当 web 缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载. 缓存大致可以分为私有缓存和公有缓存.私有缓存只提供给单独用户使用,公有缓存可以多个用户都访问使用.除了使用浏览器和代理缓存,还有网关缓存.CDN.反向代理缓存和负载均衡器等部署在服务器上.这里主要说浏览器和代理缓存器. 控制缓存的方式也不只使用HTTP首部,但是其他方式使用的不多,这里只介绍首部控制. (公有)代理缓…
  HTTP缓存是一种保存资源副本并在下次请求时直接使用该副本的技术,合理的使用缓存可以有效的提升web性能.   浏览器将js文件.css文件.图片等资源缓存,当下次请求这些资源时,可以不发送网络请求直接从缓存中取出,称为缓存命中:或者发送网络请求验证缓存而不是重新接收该资源,称为再验证命中.这两种情况都能够减少冗余数据传输.降低对服务器的要求.提高web性能.在缓存中没有找到副本,直接发送请求给服务器称为缓存未命中.   缓存空间有限,不可能将全部资源全部缓存,因此选择请求频率高的资源进行缓…
背景 缓存是数据库的副本,应用在查询数据时,先从缓存中查询,如果命中直接返回,如果未命中,去数据库查询最新数据并返回,同时写入缓存. 缓存能够有效地加速应用的读写速度,同时也可以降低后端负载.是应用架构中常用的一种技术. 问题 当业务发生时,系统状态改变,需要同时修改数据库和缓存的数据.如何保证应用从缓存读取到最新的数据,且即使数据库立即崩溃,数据也不丢失?这就是缓存与数据库的一致性问题. 分析 一个系统状态同时存在于缓存和数据库,缓存是数据库的副本,数据库可以读和写,把缓存的写看作是读缓存未命…
缓存命中和缓存未命中 ========================摘自<HTTP权威指南>============================== 1.缓存命中和缓存未命中 可以用已有的副本为某些到达缓存的请求提供服务,这被称为缓存命中(cache-hit)参见图7-4a.其他一些到达缓存的请求可能会由于没有副本可用,而被转发给原始服务器,这被称为缓存未命中(cache-miss)参见图7-4b. (1).再验证 原始服务器的内容可能会发生变化,缓存要不时的对其进行检测,看看它们保存的…