第九章-Plone站点缓存加速
- 格式:doc
- 大小:271.00 KB
- 文档页数:21
缓存解决方案1. 什么是缓存?在计算机领域,缓存是一种存储技术,其目的是通过临时存储数据的副本来减少数据访问时的延迟和带宽开销。
缓存可以存储经常被访问的数据,以提高数据的访问速度。
缓存分为多级,比如L1缓存、L2缓存等。
通常,缓存的访问速度比主存(RAM)快,这是因为缓存位于CPU内部,而主存则位于CPU外部。
2. 为什么需要缓存?在应用程序的开发中,数据的访问通常是一项耗时的操作。
每次访问数据都需要从存储介质(如数据库)中读取,这会导致延迟和带宽的浪费。
缓存的引入可以很好地解决这个问题。
通过将数据存储在缓存中,当同样的数据被再次请求时,可以直接从缓存中获取,而无需再次访问存储介质。
这样,可以大大减少数据访问的延迟。
另外,缓存还可以减少对存储介质的访问次数,从而节省宝贵的系统资源,提高系统的整体性能。
3. 缓存的相关概念在设计和实现缓存解决方案之前,有一些相关的概念需要了解:3.1 缓存命中率缓存命中率是指在所有访问中,从缓存中获取数据的比例。
缓存命中率越高,说明缓存的效果越好。
3.2 缓存失效策略缓存失效策略用于决定何时将数据从缓存中移除。
常见的缓存失效策略包括“先进先出”(FIFO)、“最近最少使用”(LRU)等。
3.3 缓存一致性缓存一致性是指在数据发生变化时,缓存中的数据是否与存储介质中的数据保持一致。
保持缓存和存储介质的一致性是缓存解决方案的重要目标。
4. 缓存解决方案4.1 本地缓存本地缓存是指将数据存储在应用程序的进程或线程内存中,以减少对外部资源的访问。
本地缓存的好处是访问速度非常快,但很难实现跨进程或跨线程的数据共享。
常见的本地缓存技术包括:•内存缓存:将数据存储在应用程序的内存中,以提高数据的访问速度。
•文件缓存:将数据缓存到文件中,以减少对存储介质的访问次数。
•数据库缓存:将数据缓存到数据库中,以加快数据的访问速度。
4.2 分布式缓存分布式缓存是指将缓存数据分布在多个节点上,以实现数据的高可用和扩展性。
域名系统(Domain Name System,简称DNS)是互联网中最基础且重要的基础设施之一,它负责将用户输入的域名转换为对应的IP地址,从而实现互联网上网站、邮箱等服务的访问。
然而,在实际应用中,有时候域名解析的速度会变慢,影响用户的使用体验。
调整域名系统中的TTL值可以提升解析速度,本文将探讨该主题。
一、了解TTL值的作用TTL,即Time to Live,是域名系统中一个重要的参数,它定义了DNS记录在缓存中的存活时间。
当我们访问一个域名时,DNS客户端会首先向本地的DNS缓存查询相应的解析结果。
如果缓存中存在记录且未过期,则直接返回结果,减少了对上层DNS服务器的查询时间。
而TTL值决定了记录在缓存中的生命周期,过期后,客户端需要重新向上层服务器发起解析请求。
二、选择合适的TTL值为了提升解析速度,我们可以运用以下几种方法来调整TTL值。
1. 找到合适的平衡点较短的TTL值会加重DNS服务器的负载,因为它们需要更频繁地查询上层服务器,但对于经常变动的记录(如负载均衡、故障转移等),较短的TTL值可以确保客户端更快地获取到最新的IP地址。
而对于变动不频繁的记录,适当增加TTL值可以减轻DNS服务器的负担。
2. 利用CDN和多台DNS服务器内容分发网络(Content Delivery Network,简称CDN)可以加速用户对静态资源的访问,通过将资源缓存在离用户更近的节点上。
结合CDN和多台DNS服务器,可以有效分担DNS解析的压力,加快解析速度。
3. 使用DNS缓存服务器对于企业级应用或有大量用户的网站来说,可以部署本地或内网DNS缓存服务器,让用户的DNS解析请求在局域网内完成,减少对外部DNS服务器的依赖,提升解析速度。
三、测试与评估在调整TTL值之后,及时进行测试和评估是十分重要的,以确保所做的改动能够达到预期的效果。
可以运用以下方法进行测试和评估。
1. 测试解析速度使用工具例如dig、nslookup等,针对需要测试的域名进行解析速度的测量。
ccache使用方法-回复使用ccache加速编译的方法编译大型项目可以是一个非常耗时的过程,特别是在进行增量编译时。
为了加快编译速度,可以使用ccache工具来缓存编译的中间文件和目标文件。
ccache是一个开源的编译器缓存工具,可以明显地加速编译过程。
本文将介绍如何使用ccache来加快编译的速度,包括安装ccache、配置环境变量、使用ccache获取加速效果等。
# 安装ccache首先需要安装ccache工具。
ccache可以在大多数操作系统上安装,包括Linux、macOS和Windows。
Linux在大多数Linux发行版上,可以使用包管理器来安装ccache。
例如,在Debian/Ubuntu上可以使用apt-get命令安装:sudo apt-get install ccache在其他发行版上,可以使用相应的包管理器来安装ccache。
macOS在macOS上,可以使用Homebrew包管理器来安装ccache。
首先安装Homebrew,然后执行以下命令来安装ccache:brew install ccacheWindows在Windows上,可以从ccache官方网站上下载预编译的二进制文件并安装。
# 配置环境变量安装完ccache后,需要配置环境变量以便系统可以找到ccache工具。
Linux和macOS在Linux和macOS上,可以通过设置PATH环境变量来指定ccache的路径。
打开终端,编辑`~/.bashrc`文件(或者`~/.bash_profile`文件),并加入以下行:export PATH="/usr/lib/ccache:PATH"保存文件后,关闭终端并重新打开一个新的终端,使环境变量生效。
Windows在Windows上,可以通过在系统的环境变量中添加ccache的路径来配置。
首先在计算机属性中找到"高级系统设置",然后点击"环境变量"按钮。
众所周知,如今的互联网时代,网站的加载速度对用户体验至关重要。
用户过多的等待时间不仅会降低用户的满意度,还会导致用户流失率的上升。
为了解决这一问题,许多网站开始采用静态资源服务器来加速网站的加载速度。
本文将论述利用静态资源服务器加速网站加载的方法和优势。
一、什么是静态资源服务器静态资源服务器是指用来存储和传送静态资源的服务器。
所谓静态资源,是指不需要在用户请求时生成的文件,通常包括图片、CSS和JavaScript等文件。
将这些静态资源存放在专门的服务器上,可以有效地减轻主服务器的负担,提升网站的加载速度。
二、如何利用静态资源服务器加速网站加载1. 静态资源文件的整理与分离首先,需要对网站的静态资源文件进行整理和分离。
这意味着将图片、CSS和JavaScript等文件都放在一个或多个独立的服务器上,与主服务器进行隔离。
这样一来,用户在请求网页时,无需再访问主服务器上的静态资源,而是直接从静态资源服务器上加载。
2. CDN技术的应用使用CDN(内容分发网络)技术,是静态资源服务器加速网站加载的重要手段之一。
CDN技术通过将静态资源复制到分布在全球各地的服务器上,当用户请求访问网站时,可以根据用户的位置,从最近的服务器上加载资源,减少网络延迟,提高资源访问速度。
3. 缓存控制的优化合理的缓存控制也是加速网站加载的重要因素。
在静态资源服务器上,可以通过设置缓存时间和缓存机制,使浏览器在首次加载网页后,可以将静态资源文件缓存在本地,这样,当用户再次访问相同页面时,就无需重新下载静态资源,从而减少了加载时间。
三、利用静态资源服务器加速网站加载的优势1. 提升用户体验通过利用静态资源服务器加速网站加载,可以有效降低用户等待的时间。
当用户能够快速加载网页,浏览体验更加流畅,可以大大提升用户的满意度,增加用户的留存率。
2. 强化SEO效果网站的加载速度也是搜索引擎优化(SEO)的重要因素之一。
搜索引擎会优先展示加载速度快的网站,而忽略加载速度慢的网站。
如何使用AMP加速移动网页加载速度移动设备越来越成为人们日常生活中不可或缺的一部分,尤其是在中国,超过一半以上的人口都使用智能手机进行上网。
随着移动设备的发展,移动网页的加载速度成为了一个十分重要的问题,毕竟无论是在家还是在出门在外,用户都希望能够快速地找到需要的信息和娱乐内容。
而AMP技术的出现,为如此快速的移动网页加载提供了新的解决方案。
什么是AMP?AMP,全称是Accelerated Mobile Pages,即加速移动页面。
它是由Google推出的一种开源项目,旨在提供一种比普通移动网页更快、更流畅的浏览体验。
和传统网页相比,AMP页面更加简洁,只包含核心内容,去除了冗余的元素和网络请求。
这使得页面加载速度大大提升,不仅大幅度缩减了页面加载时间,还可以节省用户的数据流量,使得用户在移动网络环境下也能享受到良好的浏览体验。
AMP的优势首先,AMP页面的加载速度非常快。
这是因为AMP提供的是一种轻量级的HTML标准,它只包含必要的内容。
具体来说,比如,AMP页面不包含JavaScript代码,可以避免JavaScript加载时对性能的影响,同时AMP文件可以经过特殊的压缩和编码,进一步减少文件大小,提高文件传输的速度。
其次,AMP优化了图片和视频的加载方式。
对于图片,AMP采用了懒加载的技术,即只在用户滚动到可视区域时才加载其中的图片,以此来提高网页的加载速度。
而对于视频,AMP则采用了iframe技术,通过加载Youtube的视频,避免了在移动设备上面视频流的卡顿问题。
此外,AMP页面也可以缓存至Google服务器,从而达到更快的加载速度。
当用户再次访问同一页面时,Google服务器会直接返回缓存的版本,而无需再次加载组装页面,这大幅度加快了页面的响应速度。
关于AMP的一些额外细节1.项目成立时以及发布时,由Google宣布的是,这种技术是开放标准而不是单一技术。
尽管许多技术计划被专门为此目的创建,但开放标准始终是该计划的核心部分,从而确保了互操作性和推广的可靠性。
第 1 章概述1.假设你已经将你的狗Berníe 训练成可以携带一箱3 盒8mm 的磁带,而不是一小瓶内哇地. (当你的磁盘满了的时候,你可能会认为这是一次紧急事件。
)每盒磁带的窑最为7GB 字节;无论你在哪里,狗跑向你的速度是18km/h 。
请问,在什么距离范围内Berníe的数据传输速率会超过一条数据速率为150Mbps的传输线?答:狗能携带21千兆字节或者168千兆位的数据。
18 公里/小时的速度等于0.005 公里/秒,走过x公里的时间为x / 0.005 = 200x秒,产生的数据传输速度为168/200x Gbps或者840 /x Mbps。
因此,与通信线路相比较,若x<5.6 公里,狗有更高的速度。
6. 一个客户·服务器系统使用了卫星网络,卫星的高度为40 000km. 在对一个请求进行响应的时候,最佳情形下的延迟是什么?答:由于请求和应答都必须通过卫星,因此传输总路径长度为160,000千米。
在空气和真空中的光速为300,000 公里/秒,因此最佳的传播延迟为160,000/300,000秒,约533 msec。
9.在一个集中式的二叉树上,有2n -1 个路出器相互连接起来:每个树节点上都布一个路由器。
路由器i 为了与路由器j 进行通信,它要给树的根发送一条消息。
然后树根将消息送下来给j 。
假设所有的路由器对都是等概率出现的,请推导出当n很大时,每条消息的平均跳数的一个近似表达式。
答:这意味着,从路由器到路由器的路径长度相当于路由器到根的两倍。
若在树中,根深度为1,深度为n,从根到第n层需要n-1跳,在该层的路由器为0.50。
从根到n-1 层的路径有router的0.25和n-2跳步。
因此,路径长度l为:18.OSI 的哪一层分别处理以下问题?答:把传输的比特流划分为帧——数据链路层决定使用哪条路径通过子网——网络层.28.一幅图像的分辨率为1024X 768 像素,每个像素用3 字节来表示。
使用Plone前面一章介绍了安装和部署Plone站点,下面介绍如何使用Plone。
Plone的使用是非常用户友好的,在下面的介绍和你的使用中便有所体会。
本章适合最终用户和网站管理人员阅读。
最终用户可熟悉使用Plone以及熟悉Plone 的界面组织,包括登录,个人选项设置,添加并发布内容,组织内容,讨论和搜索内容等一些基本的使用方法;网站管理员可了解对Plone站点的基本设置与管理。
本章学习重点:∙初步认识Plone的界面组织∙进入Plone,了解个人文件夹和个人选项设置∙熟悉Plone中添加、编辑内容∙了解Plone中内容的组织∙内容的评注和搜索内容∙使用Plone控制面板管理3.1 Plone的界面组织在学习本章之前,你已经看到了一些Plone站点的界面以及它们的界面组织结构。
在使用Plone的学习前我们有必要先熟悉Plone的界面组织结构。
3.1.1 Plone站点结构站点元素在Plone网站结构中的分布图如下图 3.1 。
【图 3.1】 Plone站点结构图整个站点界面包括如下元素(元素后括弧中的序号和图中对应):∙页首标签(1):页首的标签,包括“首页”、“Members”、“News”等网站分区的标签。
∙网站操作项(2):站点的一些操作项,包括“网站地图”、“联系”、“高级搜索”、“网站设置”等。
∙快速搜索区(3):网站右上方的快速搜索区域,对网站内容进行快速便捷的搜索。
∙个人栏(4):“页首标签”下方的横条,放置登录用户相关的操作。
登录后,这里包括“个人文件夹”、“选项”、“撤销”、“登出”等。
∙路径栏(5):“个人栏”下方的横条。
指示内容的当前位置,同时可点击查看上级文件夹。
∙左面板列(6):位于页面主体内容左边,一般包括“导航”、“登录”等面板。
管理员可设置“左面板列”上的面板。
∙内容标签(7):如果用户有足够的权限,则可看到内容标签。
一般包括“内容”、“查看”、“编辑”、“共享”等标签。
网站加速的技巧
网站加速是优化网站加载速度的一项技术,可以提升用户体验和搜索引擎排名。
以下是一些常见的网站加速技巧:
1. 压缩和缩小资源:使用压缩工具对CSS、JavaScript和HTML等网页资源进行压缩,减小文件大小,加快加载速度。
2. 图片优化:使用适当的图像格式(如JPEG、PNG)并对图片进行压缩,减小文件大小,同时保持良好的视觉质量。
使用懒加载技术,只在需要时加载图片。
3. 缓存:使用浏览器缓存和服务器缓存,将网站资源缓存在用户本地或服务器上,减少重复加载请求,提高加载速度。
4. CDN加速:使用内容分发网络(CDN),将网站资源分发到全球各地的服务器节点,提供就近访问,减少网络延迟。
5. 延迟加载:将页面上非必要的内容延迟加载,在用户滚动或点击时再加载,减少初次加载时间。
6. 域名并行加载:将网站资源分布在多个域名下,并行加载,提高加载速度。
7. 脚本优化:将外部脚本放在页面底部,避免阻塞页面加载。
8. CSS Sprites:将多个小图标合并为一个大图,通过CSS背景位置来显示不同的图标,减少HTTP请求。
9. Gzip压缩:启用Gzip压缩服务器配置,以减少从服务器到浏览器传输的文件大小。
10. 减少重定向:最小化重定向的使用,减少不必要的HTTP请求。
这些技巧并非全部,网站加速还涉及到服务器性能优化、代码优化、数据库优化等方面,综合使用可以有效加速网站加载速度。
l1cache策略
L1缓存策略是计算机系统中的一种高速缓存策略,用于提高数据访问的效率。
在这篇文章中,我们将从人类的视角来介绍L1缓存策略的原理和作用。
L1缓存是位于CPU内部的一级缓存,其作用是存储CPU频繁访问的数据和指令。
相比于内存或其他较慢的存储介质,L1缓存的读写速度更快,可以大大减少CPU访问数据的时间。
L1缓存采用了一种称为缓存行的数据结构来组织数据。
每个缓存行的大小通常为64字节,包含多个连续的内存地址。
当CPU需要读取数据时,它首先会查找L1缓存。
如果所需数据在缓存行中已经存在,CPU可以直接从缓存中读取,而无需访问内存。
这样可以大大减少数据访问的延迟,提高计算机系统的整体性能。
然而,L1缓存的容量有限,一般在几十KB到几百KB之间。
当CPU需要读取的数据超过L1缓存的容量时,就会发生缓存未命中。
这时,CPU需要从较慢的内存中读取数据,并将其存储到L1缓存中,以供后续的访问。
缓存未命中会导致额外的延迟,降低系统的性能。
为了尽量减少缓存未命中的次数,L1缓存采用了一种叫做缓存替换算法的策略。
常见的缓存替换算法包括最近最少使用(LRU)算法和随机替换算法。
这些算法根据一定的规则来选择被替换的缓存行,
以便将最频繁使用的数据存储在L1缓存中,提高系统的整体性能。
总结一下,L1缓存策略是通过将频繁访问的数据存储在CPU内部的一级缓存中,以提高数据访问的效率。
它使用缓存行和缓存替换算法来组织和管理数据,以减少缓存未命中的次数。
通过合理使用L1缓存策略,可以提高计算机系统的性能,加快数据访问的速度。
CDN技术介绍-总题库1、CDN调度策略中,(B):同⼀个⽤户可由邻近地区的多个节点提供服务,此时需将⽤户调度⾄节点处理负荷较低、相对空闲的服务节点,实现多个节点的负荷尽量均衡; A. 地址位置 B. 节点负荷 C. ⽹络质量 D. 流量均衡2、请求调度策略是(A)调度中⼼的核⼼配置,不同的调度策略可以实现不同的运营⽬标,如最优服务质量、均衡⽹络流量、降低运营成本等。
A. CDN B. SDN C. DPI D. DNS3、DNS⽤来解析下列各项中的哪⼀项(A)A. IP地址和MAC地址B. 主机名和IP地址C. TCP名字和地址D. 主机名和传输层地址4、建⽴⼀个TCP连接,⾄少需要服务器端和客户端进⾏(C)个分组数据的交换,因此,称之为TCP的(C)路握⼿A. ⼀B. ⼆C. 三D. 四5、关于动态⽹页和静态⽹页的说法哪个是不正确的?(C)A. 静态⽹页和动态⽹页主要根据⽹页制作的语⾔来区分B. 动态⽹页使⽤的语⾔以超⽂本标记语⾔为基础,结合⼀些脚本语⾔来编写C. ⽹站采⽤动态⽹页还是静态⽹页主要取决于⽹站的类型D. 程序是否在服务器端运⾏是动态⽹页的重要标志6、以下对于动态⽹页的描述正确的是(B)A. 在动态⽹页中,显⽰内容的改变需要通过修改代码来实现B. 动态⽹页是⼀种基于B/S模式的Web应⽤C. 动态⽹页不⽀持客户端与服务器端的交互功能D. BBS论坛不属于动态⽹页技术应⽤7、RTCP数据包类型包括 A. SR、RR、SDESSETUP B. TEARDOWN C. DESCRIBE、SETUP、PLAY D. PAUSE、TEARDOWNE. DESCRIBE、SETUPF. PLAY、BYE、APPG. SR、RR、SDES、BYE、APP1、以下哪些是HTML5引⼊的新标签(ABC)A.videoB.audioC.canvas/doc/32a0528f00d276a20029bd64783e0912a2167cf0.html mand2、DNS服务器的三种主要类型有(ABC) A. 顶级名字服务器 B. 主名字服务器 C. 次名字服务器 D. 惟⾼速缓存名字服务器1、DNS服务器的默认端⼝号是(D)端⼝A.50B.51C.52D.532、(C)资源记录提供为主机创建别名的能⼒。
Plone站点缓存加速如果网站的访问量非常大,在直接使用Plone提供服务生成动态页面的情况下,网站页面打开会非常慢,用户体验不佳。
为了解决这个问题,从Plone2.5开始,Plone自带了一个叫做CacheFu的插件产品。
使用CacheFu,可通过内存、缓存代理服务器、浏览器多种缓存的组合,实现完成Plone站点的加速。
一旦配置完成,你的站点可提速近10倍;如果配合Squid,可提速近50倍。
对于真正的大负载的Plone网站部署,都是需要采用CacheFu来进行网站加速的。
本章介绍如何利用CacheFu和Squid加速您的站点。
本章学习重点:∙HTTP缓存协议和缓存原理∙CacheFu的缓存设置∙squid的设置和缓存清除9.1 缓存加速原理9.1.1 基本原理所谓缓存,是指将计算后的结果保存到内存或者硬盘,下次访问的时候,直接将保存的结果输出,从而避免重复计算导致服务器过载,同时也加快响应速度。
如果将需要网络传输的数据缓存,还可以起到减少网络流量,节省带宽耗用的作用。
同时,配置缓存的时候,需要考虑注意回避如下问题。
这也是后面配置缓存时需要设法规避的。
∙缓存可能占用大量的内存、硬盘空间。
我们需要权衡缓存生效的时间、保存的数量,避免缓存内容过大。
∙缓存可能带来过时的数据。
一旦更新数据,需要刷新缓存。
Zope在数据存取的各个环节,均可设置缓存。
9.1.2 回顾: ZODB的缓存管理在ZODB一章中,我们介绍了ZEO缓存和ZODB的缓存,回顾如下:∙ZEO缓存:在zope.conf中的zeoclient中设置,表示对ZEO数据库的缓存。
缓存保存在本地硬盘中,避免每次从远程ZEO服务器上读取对象。
∙ZODB的缓存:在zope.conf的zodb_db中设置,表示内存中缓存的ZODB对象数量。
缓存保存在内存中,可避免每次都从硬盘中读取。
在ZMI中的Control_Panels 中,可对ZODB缓存进行清除和分析。
9.1.3 Zope的缓存管理器zope提供了一个叫做Zope缓存管理器(CacheManager)可插拔的缓存框架。
你可编写一个缓存管理器,然后将支持缓存功能的Zope对象和这个缓存管理器绑定,就可以对这个对象进行缓存。
文件、图片、ZPT、DTML等对象都支持缓存管理。
在ZMI中,有个 Cache 标签页用于设置缓存管理器。
比如网站的logo图片 portal_skins/custom/logo.jpg 缓存设置界面如图9.1所示。
【图9.1】对象的缓存管理器绑定在上图中,下拉列表中的HTTPCache、RAMCache等,都是网站的一些缓存管理器,可选择一个,将对象的缓存管理委托给该管理器管理。
在Plone网站根的ZMI界面中,我们可以找到这些缓存管理器,典型如图9.2所示。
【图9.2】Plone预装的几个缓存管理器对象其中:∙RAMCache对象是一种叫做RAM Cache Manager 的缓存管理器,他直接用服务器内存进行缓存结果。
为避免内存耗用过多,RAMCache一般不适合缓存整个页面,而适合对脚本的中间的结算结果进行缓存。
∙HTTPCache对象是一种叫做Accelerated HTTP Cache Manager 的缓存管理器,他仅仅设置http的缓存消息头,不真正进行缓存,可和squid/apache这样的缓存服务器配合进行缓存。
缓存服务器可将动态页面转换为静态页面缓存起来,再次访问的时候,将直接由代理服务器提供服务,从而提升性能,减少Zope的负担。
其中RAMCache缓存管理器的设置界面如图9.3所示。
【图9.3】RAMCache内存缓存管理器的设置其中:∙REQUEST variables: request变量中会对结果有影响的参数。
根据这个参数的不同,缓存管理器会保留多个结果版本。
图中设置AUTHENTICATED_USER,表示系统会为每个登录用户保留一份缓存。
∙Threshold entires: 最多保留多少份缓存数据。
这个可避免缓存数量逐步增加,导致内存不够用的情况发生。
∙Maximum age of a cache entry (seconds): 每个缓存的最大存活时间。
及时的让缓存失效,可减少数据过时的机会。
∙Cleanup interval (seconds): 数据清理周期时间。
定期对数据进行清理。
9.1.4 CacheFu的缓存框架网站的内容非常多。
Zope默认的缓存管理,仅仅能够对内容逐一进行内容的关联,而且操作界面不友好。
针对这一问题,Plone 2.5提供了一个叫做CacheFu的缓存框架,构建了一个基于规则的缓存策略,分离了缓存的条件、缓存方法、缓存消息头,同时提供了一个友好的缓存管理节目。
在内部实现上,CacheFu提供了几个新的缓存管理器:∙Page Cache Manager:类似RAM Cache Manager, 同时将响应消息头也保存了,适合对某些页面进行缓存。
∙Policy HTTP Cache Manager:基于策略的HTTP缓存管理器,具体的缓存消息头设置是由Cache在Plone的控制面板中设置的,在后面章节中,我们会详细介绍。
9.2 HTTP协议的缓存浏览网页采用的是HTTP协议实现浏览器和服务器的通讯。
HTTP协议中包括了完整的缓存管理规范。
9.2.1 缓存部件用户通过浏览器来访问Plone服务器的时候,中间可能经过浏览器和缓存服务器,如下结构图所示:+------------+ +---------------------+ +--------------------+| Zope/Plone |<--| Squid缓存代理服务器 |<--| 浏览器(FireFox/IE) |<---用户+------------+ +---------------------+ +--------------------+| |V V/-------------\ /--------------\| Proxy Cache | | Brower Cache |\-------------/ \--------------/这里,浏览器和缓存服务器都能提供缓存功能:∙浏览器:一般浏览器都可以进行缓存。
浏览器根据接收页面的http 消息头中缓存设置信息进行缓存。
浏览器一般都有清除缓存的功能。
∙Squid/Apache缓存服务器proxy:缓存服务器,Squid更加专业。
缓存服务器位于浏览器和,web服务器之间。
缓存服务器根据http部分消息头进行缓存。
web服务器可发送purge指令到缓存服务器,清除过时的缓存。
Squid支持多个缓存服务器树状阵列,缓存服务器之间通过ICP协议进行缓存信息交换。
如果在zope.conf中开启icp服务器,则Zope可设置为squid的上级缓存服务器,让squid在多个zope服务器之间负载均衡。
9.2.2 观察HTTP消息头HTTP协议包括消息头和消息体。
HTTP缓存消息头可控制网页何时、在哪里缓存。
在Linux下,可用 wget-d ,查看完整的HTTP请求和响应消息头。
比如查看访问首页时的消息头如下:---request begin---GET / HTTP/1.0User-Agent: Wget/1.10.2Accept: */*Host: Connection: Keep-Alive---request end---HTTP request sent, awaiting response...---response begin---HTTP/1.0 200 OKServer: Zope/(Zope 2.8.7-final, python 2.3.5, linux2) ZServer/1.1 Plone/2.1.5 (SVN/UNRELEASED)Date: Mon, 11 Dec 2006 03:40:24 GMTX-Pagecache: HITContent-Length: 43524Content-Language: enExpires: Fri, 13 Dec 1996 03:39:58 GMTVary: Accept-EncodingETag: ||Plone Default|0|652025|False|||||323835X-Caching-Rule-Id: plone-containersCache-Control: max-age=0, s-maxage=0, private, must-revalidateContent-Type: text/html;charset=utf-8X-Header-Set-Id: cache-in-memoryX-Cache: MISS from X-Cache-Lookup: MISS from :80Connection: keep-alive---response end---[省略后面的输出...]在response部分,可看到很多消息头,后面将逐一介绍。
另外,firefox浏览器提供了一个LiveHTTPHeaders插件(/),使用它可在加载页面的时候,观察完整http消息头。
安装后,从工具菜单中打开 Live HTTP headers 窗口,访问某个页面,观察http 消息头,如图9.4所示。
【图9.4】Firefox插件LiveHTTPHeaders的消息头监视窗口一般页面包括各种图片、css、flash等,对于外部的门户级别网站,所有这些内容一般都需要进行缓存。
可利用LiveHTTPHeader插件,可逐一检查是否有遗漏的元素没有缓存。
9.2.3 标准的缓存消息头Vary, Etag, Cache-Control, Age是标准的缓存消息头,用于控制内容的缓存策略。
Plone提供了对这些消息头的控制方法。
如果HTTP消息头中出现这些,表示服务器缓存机制在生效了。
9.2.3.1 Cache-Control消息头Cache-Control 是HTTP协议中主要的缓存控制参数。
在上面访问Plone网站首页的输出中,我们看到:Cache-Control: max-age=0, s-maxage=0, private, must-revalidateCache-Control消息头可包括一组控制变量,具体包括:∙max-age:这个参数告诉浏览器将页面缓存多长时间,超过这个时间后才再次向服务器发起请求检查页面是否有更新。
对于静态的页面,比如图片、CSS、Javascript,一般都不大变更,因此通常我们将存储这些内容的时间设置为较长的时间,这样浏览器会不会向浏览器反复发起请求,也不会去检查是否更新了。