web缓存技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库数据缓存。 Web应用,特别是SNS类型的应用,往往关系比较复杂,数据库表繁多,如 果频繁进行数据库查询,很容易导致数据库不堪重荷。为了提供查询的性能 ,会将查询后的数据放到内存中进行缓存,下次查询时,直接从内存缓存直 接返回,提供响应效率。比如常用的缓存方案有memcached等。
web缓存算法
先进先出。
• Simple time-based
通过绝对的时间周期去失效缓存对象。
• Extended time-based expiration
通过相对时间失效缓存对象。
• Sliding time-based expiration
缓存对象的生命起点是在这个缓存的最后被访问时间算起。
web缓存软件
web缓存技术介绍
• Web缓存基本原理
web缓存技术介绍
• Web缓存的作用
减少网络延迟,加快页面打开速度。 减少网络带宽消耗。
降低服务器压力。
增强系统可用性。
web缓存技术介绍
• Web缓存宏观架构
web缓存技术介绍
• 可能会带来的一些新问题
客户通过代理获取的可能是过时的内容; 如果发生缓存失效,客户的访问延迟由于额外的代理处理开销而增加。 因此在设计Web缓存系统时,应力求做到Cache命中率最大化和失效代价最 小化; 代理可能成为瓶颈。 因此应为一个代理设定一个服务客户数量上限及一个服务效率下限,使得一 个代理系统的效率至少同客户直接和远程服务器相连的效率一样。
web缓存技术
By 薛长俊 2013-8
Web缓存技术
介绍 算法 常用软件
web缓存技术介绍
• 什么是Web缓存
Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在于Web 服务器和客户端(浏览器)之间的副本。 缓存会根据进来的请求保存输出内容的副本;当下一个请求来到的时候,如 果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应访问请求, 还是向源服务器再次发送请求。 比较常见的就是浏览器会缓存访问过网站的网页,当再次访问这个URL地址 的时候,如果网页没有更新,就不会再次下载网页,而是直接使用本地缓存 的网页。只有当网站明确标识资源已经更新,浏览器才会再次下载网页。
Nginx proxy模块配置
• 设置缓存的路径和其他参数
语法: proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time] [max_size=size] [loader_files=number] [loader_sleep=time] [loader_threshold=time]; — http
web缓存技术介绍
• Web缓存的类型
代理服务器缓存。 浏览器和源服务器之间的中间服务器,浏览器先向这个中间服务器发起Web 请求,经过处理后,再将请求转发到源服务器。常见代理服务器缓存解决方 案有nginx、squid等。
Web应用层缓存。 应用层缓存指的是从代码层面上,通过代码逻辑和缓存策略,实现对数据, 页面,图片等资源的缓存,可以根据实际情况选择将数据存在文件系统或者 内存中,减少数据库查询或者读写瓶颈,提高响应效率。
web缓存技术介绍
• 一个理想的Web缓存系统特征
快捷性:缓存系统应该能够有效地降低客户的访问延迟; 鲁棒性:鲁棒性意味着可用性,客户希望Web服务随时可用; 透明性:缓存系统对客户应是透明的,客户得到的结果仅仅是快速的响应和 良好的可用性; 可扩展性:应能够随着网络规模和密度的不断增长而很好地进行扩展; 高效性:Web缓存系统给网络带来的开销越小越好; 适应性:缓存系统能够适应客户请求和网络环境的动态变化,这涉及到缓存 管理、缓存路由、代理配置等,对于获得理想的缓存性能至关重要; 稳定性:Web缓存系统采用的方案不应给网络带来不稳定; 负载均衡:一个理想的缓存方案应能够将负载均匀地分发到整个网络,以避 免某一个代理或服务器成为瓶颈或Hot spot点,而造成系统一部分甚至整个 系统性能下降; 异构处理能力:随着网络规模和覆盖域的不断增大,网络将跨越一系列不同 的硬件和软件体系结构。Web缓存系统应能够适应不同的网络体系结构; 简单性:简单的方案容易实现且易被普遍接受,一个理想的Web缓存方案配 置起来应简单易行。
Nginx proxy模块配置
• 配置范例
proxy_temp_path /date/nginx/proxy_temp 1 2; proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=ng_cache:400m inactive=1d max_size=60g; location / { proxy_set_header proxy_set_header proxy_http_version proxy_cache_valid proxy_cache_valid proxy_cache_key proxy_cache proxy_pass }
web缓存技术介绍
• Web缓存的类型
浏览器端缓存。 浏览器缓存根据一套与服务器约定的规则进行工作,在同一个会话过程中会 检查一次并确定缓存的副本足够新。如果你浏览过程中,比如前进或后退, 访问到同一个图片,这些图片可以从浏览器缓存中调出而即时显现。
CDN缓存。 CDN(Content delivery networks)缓存,也叫网关缓存、反向代理缓存 。CDN缓存一般是由网站管理员自己部署,为了让他们的网站更容易扩展并 获得更好的性能。浏览器先向CDN网关发起Web请求,网关服务器后面对应 着一台或多台负载均衡源服务器,会根据它们的负载请求,动态将请求转发 到合适的源服务器上。虽然这种架构负载均衡源服务器之间的缓存没法共享 ,但却拥有更好的处扩展性。从浏览器角度来看,整个CDN就是一个源服务 器,从这个层面来说,本文讨论浏览器和服务器之间的缓存机制,在这种架 构下同样适用。
web缓存技术介绍
• Web缓存系统需要解决
缓存体系结构:缓存代理在网络中如何组织和配置; 代理合作:代理间如何合作,相互合作的代理可以提高命中率而改善缓存系 统的性能; 缓存路由:当一处缓存代理失效时,如何将请求向其它缓存代理转发; 缓存替换算法:当缓存空间不够时,缓存内容如何替换; 缓存一致性:即缓存内容的时效性问题,如何防止缓存的内容过时; 内容预取:代理如何决定从服务器或其它代理处进行内容预取以减少客户的 访问延迟; 负载平衡:如何解决网络中的“Hot spot”现象; 缓存内容:什么样的内容可以被缓存。
Squid介绍
• 代理服务器的作用
Squid介绍
• Squid主要功能
支持代理HTTP、FTP协议; 支持代理SSL ; 采用层次化的缓存结构; 实现了ICP(Internet 缓存协议)、HTCP(超文本缓存协议)、CARP(缓 存数组路由协议)和Cache Digests(缓存摘要); 支持透明代理; 支持WCCP (Web缓存通信协议); 支持丰富的访问控制列表功能; 支持HTTP加速器功能,实现反向代理; 支持SNMP; 支持缓存DNS查询。
• Adaptive Replacement Cwk.baidu.comche(ARC)
由2个 LRU 组成,第一个LRU包含最近只被使用过一次的对象,第二个 LRU包 含最近被使用过两次以上的对象。因此, L1 放的是新的对象,而 L2 放的是常 用的对象。
web缓存算法
• First in First out(FIFO)
• 几款优秀的开源软件
Nginx:高性能HTTP服务器,通过Proxy Cache使其对静态资源进行缓存。 Squid:一款著名的代理服务器软件 ,可用做缓存服务器。 Memcached:高性能的分布式内存对象缓存系统,用于动态Web应用以减 轻数据库负载。 Redis:基于内存、键值对存储数据库,支持持久化,支持主从复制。 eAccelerator: eAccelerator是一个自由开放源码php加速器,优化和动态 内容缓存,提高了php脚本的缓存性能。
Nginx介绍
• 简介
Nginx是高性能的HTTP服务器,通过Proxy Cache可以使其对静态资源进行 缓存。其原理就是把静态资源按照一定的规则存在本地硬盘,并且会在内存 中缓存常用的资源,从而加快静态资源的响应。 Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关 指令集构成。
• 设置代理使用的HTTP协议版本
语法: 默认值: 上下文: proxy_http_version 1.0 | 1.1; proxy_http_version 1.0; http, server, location
• 设置后端服务器的协议和地址
语法: 默认值: 上下文: proxy_pass URL; — location, if in location, limit_except
Nginx purge
• 配置示例
location ~ /purge(/.*) { #允许的IP allow 127.0.0.1; deny all; proxy_cache_purge cache1 $scheme$host$1; }
• 清除缓存方式
wget http://example.com/purge/uri
Squid介绍
• 简介
Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可 证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服 务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组 人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量 帮助网络安全,到局域网通过代理上网。Squid主要设计用于在Unix一类系 统运行。 Squid的发展历史相当悠久,功能也相当完善。除了HTTP外,对于FTP与 HTTPS的支援也相当好,在3.0 测试版中也支援了IPv6。
默认值: 上下文:
• 指定用于页面缓存的共享内存
语法: 默认值: 上下文: proxy_cache zone | off; proxy_cache off; http, server, location
Nginx proxy模块配置
• 为不同的响应状态码设置不同的缓存时间
语法: 默认值: 上下文: proxy_cache_valid [code ...] time; — http, server, location
• Least Frequently Used(LFU)
将访问次数最少的内容替换出Cache。
• Least Recently User(LRU)
将最近最少使用的内容替换出Cache。
• Two Queues(2Q)
把被访问的数据放到 LRU 的缓存中,如果这个对象再一次被访问,就把他转移 到第二个、更大的 LRU 缓存。
• 定义如何生成缓存的键
语法: 默认值: 上下文: proxy_cache_key string; proxy_cache_key $scheme$proxy_host$request_uri; http, server, location
• 设置响应被缓存的最小请求次数
语法: 默认值: 上下文: proxy_cache_min_uses number; proxy_cache_min_uses 1; http, server, location
Host $host; Connection “”; 1.1; 302 5m; 200 20d; "$scheme$host$request_uri"; ng_cache; http://localhost:8000;
Nginx proxy模块配置
• 重新定义或者添加发往后端服务器的请求头
语法: 默认值: 上下文: proxy_set_header field value; proxy_set_header Host $proxy_host;proxy_set_header Connection close; http, server, location
web缓存算法
先进先出。
• Simple time-based
通过绝对的时间周期去失效缓存对象。
• Extended time-based expiration
通过相对时间失效缓存对象。
• Sliding time-based expiration
缓存对象的生命起点是在这个缓存的最后被访问时间算起。
web缓存软件
web缓存技术介绍
• Web缓存基本原理
web缓存技术介绍
• Web缓存的作用
减少网络延迟,加快页面打开速度。 减少网络带宽消耗。
降低服务器压力。
增强系统可用性。
web缓存技术介绍
• Web缓存宏观架构
web缓存技术介绍
• 可能会带来的一些新问题
客户通过代理获取的可能是过时的内容; 如果发生缓存失效,客户的访问延迟由于额外的代理处理开销而增加。 因此在设计Web缓存系统时,应力求做到Cache命中率最大化和失效代价最 小化; 代理可能成为瓶颈。 因此应为一个代理设定一个服务客户数量上限及一个服务效率下限,使得一 个代理系统的效率至少同客户直接和远程服务器相连的效率一样。
web缓存技术
By 薛长俊 2013-8
Web缓存技术
介绍 算法 常用软件
web缓存技术介绍
• 什么是Web缓存
Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在于Web 服务器和客户端(浏览器)之间的副本。 缓存会根据进来的请求保存输出内容的副本;当下一个请求来到的时候,如 果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应访问请求, 还是向源服务器再次发送请求。 比较常见的就是浏览器会缓存访问过网站的网页,当再次访问这个URL地址 的时候,如果网页没有更新,就不会再次下载网页,而是直接使用本地缓存 的网页。只有当网站明确标识资源已经更新,浏览器才会再次下载网页。
Nginx proxy模块配置
• 设置缓存的路径和其他参数
语法: proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time] [max_size=size] [loader_files=number] [loader_sleep=time] [loader_threshold=time]; — http
web缓存技术介绍
• Web缓存的类型
代理服务器缓存。 浏览器和源服务器之间的中间服务器,浏览器先向这个中间服务器发起Web 请求,经过处理后,再将请求转发到源服务器。常见代理服务器缓存解决方 案有nginx、squid等。
Web应用层缓存。 应用层缓存指的是从代码层面上,通过代码逻辑和缓存策略,实现对数据, 页面,图片等资源的缓存,可以根据实际情况选择将数据存在文件系统或者 内存中,减少数据库查询或者读写瓶颈,提高响应效率。
web缓存技术介绍
• 一个理想的Web缓存系统特征
快捷性:缓存系统应该能够有效地降低客户的访问延迟; 鲁棒性:鲁棒性意味着可用性,客户希望Web服务随时可用; 透明性:缓存系统对客户应是透明的,客户得到的结果仅仅是快速的响应和 良好的可用性; 可扩展性:应能够随着网络规模和密度的不断增长而很好地进行扩展; 高效性:Web缓存系统给网络带来的开销越小越好; 适应性:缓存系统能够适应客户请求和网络环境的动态变化,这涉及到缓存 管理、缓存路由、代理配置等,对于获得理想的缓存性能至关重要; 稳定性:Web缓存系统采用的方案不应给网络带来不稳定; 负载均衡:一个理想的缓存方案应能够将负载均匀地分发到整个网络,以避 免某一个代理或服务器成为瓶颈或Hot spot点,而造成系统一部分甚至整个 系统性能下降; 异构处理能力:随着网络规模和覆盖域的不断增大,网络将跨越一系列不同 的硬件和软件体系结构。Web缓存系统应能够适应不同的网络体系结构; 简单性:简单的方案容易实现且易被普遍接受,一个理想的Web缓存方案配 置起来应简单易行。
Nginx proxy模块配置
• 配置范例
proxy_temp_path /date/nginx/proxy_temp 1 2; proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=ng_cache:400m inactive=1d max_size=60g; location / { proxy_set_header proxy_set_header proxy_http_version proxy_cache_valid proxy_cache_valid proxy_cache_key proxy_cache proxy_pass }
web缓存技术介绍
• Web缓存的类型
浏览器端缓存。 浏览器缓存根据一套与服务器约定的规则进行工作,在同一个会话过程中会 检查一次并确定缓存的副本足够新。如果你浏览过程中,比如前进或后退, 访问到同一个图片,这些图片可以从浏览器缓存中调出而即时显现。
CDN缓存。 CDN(Content delivery networks)缓存,也叫网关缓存、反向代理缓存 。CDN缓存一般是由网站管理员自己部署,为了让他们的网站更容易扩展并 获得更好的性能。浏览器先向CDN网关发起Web请求,网关服务器后面对应 着一台或多台负载均衡源服务器,会根据它们的负载请求,动态将请求转发 到合适的源服务器上。虽然这种架构负载均衡源服务器之间的缓存没法共享 ,但却拥有更好的处扩展性。从浏览器角度来看,整个CDN就是一个源服务 器,从这个层面来说,本文讨论浏览器和服务器之间的缓存机制,在这种架 构下同样适用。
web缓存技术介绍
• Web缓存系统需要解决
缓存体系结构:缓存代理在网络中如何组织和配置; 代理合作:代理间如何合作,相互合作的代理可以提高命中率而改善缓存系 统的性能; 缓存路由:当一处缓存代理失效时,如何将请求向其它缓存代理转发; 缓存替换算法:当缓存空间不够时,缓存内容如何替换; 缓存一致性:即缓存内容的时效性问题,如何防止缓存的内容过时; 内容预取:代理如何决定从服务器或其它代理处进行内容预取以减少客户的 访问延迟; 负载平衡:如何解决网络中的“Hot spot”现象; 缓存内容:什么样的内容可以被缓存。
Squid介绍
• 代理服务器的作用
Squid介绍
• Squid主要功能
支持代理HTTP、FTP协议; 支持代理SSL ; 采用层次化的缓存结构; 实现了ICP(Internet 缓存协议)、HTCP(超文本缓存协议)、CARP(缓 存数组路由协议)和Cache Digests(缓存摘要); 支持透明代理; 支持WCCP (Web缓存通信协议); 支持丰富的访问控制列表功能; 支持HTTP加速器功能,实现反向代理; 支持SNMP; 支持缓存DNS查询。
• Adaptive Replacement Cwk.baidu.comche(ARC)
由2个 LRU 组成,第一个LRU包含最近只被使用过一次的对象,第二个 LRU包 含最近被使用过两次以上的对象。因此, L1 放的是新的对象,而 L2 放的是常 用的对象。
web缓存算法
• First in First out(FIFO)
• 几款优秀的开源软件
Nginx:高性能HTTP服务器,通过Proxy Cache使其对静态资源进行缓存。 Squid:一款著名的代理服务器软件 ,可用做缓存服务器。 Memcached:高性能的分布式内存对象缓存系统,用于动态Web应用以减 轻数据库负载。 Redis:基于内存、键值对存储数据库,支持持久化,支持主从复制。 eAccelerator: eAccelerator是一个自由开放源码php加速器,优化和动态 内容缓存,提高了php脚本的缓存性能。
Nginx介绍
• 简介
Nginx是高性能的HTTP服务器,通过Proxy Cache可以使其对静态资源进行 缓存。其原理就是把静态资源按照一定的规则存在本地硬盘,并且会在内存 中缓存常用的资源,从而加快静态资源的响应。 Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关 指令集构成。
• 设置代理使用的HTTP协议版本
语法: 默认值: 上下文: proxy_http_version 1.0 | 1.1; proxy_http_version 1.0; http, server, location
• 设置后端服务器的协议和地址
语法: 默认值: 上下文: proxy_pass URL; — location, if in location, limit_except
Nginx purge
• 配置示例
location ~ /purge(/.*) { #允许的IP allow 127.0.0.1; deny all; proxy_cache_purge cache1 $scheme$host$1; }
• 清除缓存方式
wget http://example.com/purge/uri
Squid介绍
• 简介
Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可 证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服 务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组 人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量 帮助网络安全,到局域网通过代理上网。Squid主要设计用于在Unix一类系 统运行。 Squid的发展历史相当悠久,功能也相当完善。除了HTTP外,对于FTP与 HTTPS的支援也相当好,在3.0 测试版中也支援了IPv6。
默认值: 上下文:
• 指定用于页面缓存的共享内存
语法: 默认值: 上下文: proxy_cache zone | off; proxy_cache off; http, server, location
Nginx proxy模块配置
• 为不同的响应状态码设置不同的缓存时间
语法: 默认值: 上下文: proxy_cache_valid [code ...] time; — http, server, location
• Least Frequently Used(LFU)
将访问次数最少的内容替换出Cache。
• Least Recently User(LRU)
将最近最少使用的内容替换出Cache。
• Two Queues(2Q)
把被访问的数据放到 LRU 的缓存中,如果这个对象再一次被访问,就把他转移 到第二个、更大的 LRU 缓存。
• 定义如何生成缓存的键
语法: 默认值: 上下文: proxy_cache_key string; proxy_cache_key $scheme$proxy_host$request_uri; http, server, location
• 设置响应被缓存的最小请求次数
语法: 默认值: 上下文: proxy_cache_min_uses number; proxy_cache_min_uses 1; http, server, location
Host $host; Connection “”; 1.1; 302 5m; 200 20d; "$scheme$host$request_uri"; ng_cache; http://localhost:8000;
Nginx proxy模块配置
• 重新定义或者添加发往后端服务器的请求头
语法: 默认值: 上下文: proxy_set_header field value; proxy_set_header Host $proxy_host;proxy_set_header Connection close; http, server, location