利用客户端缓存对网站进行优化的原理分析第1/2页_php技巧

很多人首先会想从服务器缓存方面着手对程序进行优化,许多不同的服务器缓存方式都有他们自己的特点,像我曾经参与的一些项目中,根据缓存的命中率不同使用过 Com+/Enterprise Libiary Caching/Windows服务,静态文件等方式的服务器端缓存和 HTTP Compression技术,但客户端缓存往往却被人们忽略了,即使服务器的缓存让你的页面访问起来非常地快,但她依然需要依赖浏览器下载并输出,而当你加入客户端缓存时,会给你带来非常多的好处.因为她可以对站点中访问最频繁的页进行缓存充分地提高 Web 服务器的吞吐量(通常以每秒的请求数计算)以提升应用程序性能和可伸缩性。
一个在线购物调查显示,大多数人愿意去商店排队,但在在线购物时却不愿意等待。Websense调查公司称多达70%的上网者表示不愿意在页面读取上超过10秒钟。超过70%的人会因为中途速度过慢而取消当前的订单。

基础知识
1) 什么是”Last-Modified”?

在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记此文件在服务期端最后被修改的时间,格式类似这样:

Last-Modified: Fri, 12 May 2006 18:53:33 GMT

客户端第二次请求此URL时,根据 HTTP 协议的规定,浏览器会向服务器传送 If-Modified-Since 报头,询问该时间之后文件是否有被修改过:

If-Modified-Since: Fri, 12 May 2006 18:53:33 GMT

如果服务器端的资源没有变化,则自动返回 HTTP 304 (Not Changed.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类似。 从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。

2) 什么是”Etag”?

HTTP 协议规格说明定义ETag为“被请求变量的实体值” (参见 —— 章节 14.19)。 另一种说法是,ETag是一个可以与Web资源关联的记号(token)。典型的Web资源可以一个Web页,但也可能是JSON或XML文档。服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端,以下是服务器端返回的格式:

ETag: "50b1c1d4f775c61:df3"

客户端的查询更新格式是这样的:

If-None-Match: W/"50b1c1d4f775c61:df3"

如果ETag没改变,则返回状态304然后不返回,这也和Last-Modified一样。本人测试Etag主要在断点下载时比较有用。

Last-Modified和Etags如何帮助提高性能?
聪明的开发者会把Last-Modified 和ETags请求的http报头一起使用,这样可利用客户端(例如浏览器)的缓存。因为服务器首先产生 Last-Modified/Etag标记,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端通过将该记号传回服务器要求服务器验证其(客户端)缓存。
过程如下:
1. 客户端请求一个页面(A)。
2. 服务器返回页面A,并在给A加上一个Last-Modified/ETag。
3. 客户端展现该页面,并将页面连同Last-Modified/ETag一起缓存。
4. 客户再次请求页面A,并将上次请求时服务器返回的Last-Modified/ETag一起传递给服务器。
5. 服务器检查该Last-Modified或ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304和一个空的响应体。

下面的例子描述如何使用服务器端代码去操作客户端缓存:

当前1/2页 12下一页阅读全文

时间: 2024-12-03 10:26:35

利用客户端缓存对网站进行优化的原理分析第1/2页_php技巧的相关文章

搜索引擎判断网站是否作弊的原理分析(三)

广州SEO陈永继续为大家讲解搜索引擎判断网站如何判断网站是否作弊的原理,上节讲解完TrustRank算法,这一节将详细讲解BadRank算法. BadRank据传是Google采用的反链接作弊算法.它是一种典型的不信任传播模型,即首先构建作弊网页集合,之后利用链接关系来讲这种不信任分值传递到其他网页. BadRank包含的基本假设是:如果一个网页将其链接指向作弊页面,则这个网页也很可能是作弊网页:而如果一个网页被作弊网页指向,则不能说明这个网页是有问题的,因为作弊网页也经常将其链接指向一些知名网

搜索引擎判断网站是否作弊的原理分析(二)

承接搜索引擎判断网站是否作弊的原理分析(一) 广州SEO陈永继续为大家分析信任传播模型.不信任传播模型及异常发现模型3个代表算法,它们分别是TrustRank算法.BadRank算法和SpamRank算法. 我们先详细介绍TrustRank算法 TrustRank算法属于信任传播模型,基本遵循信任传播模型的流程,即算法流程如下两个步骤组成. 步骤一:确定值得信任的网页集合 TrustRank算法需要靠人工审核来判断某个网页应该被放入网页集合,考虑到人工审核工作量大,所以提出了两种初选信任网页集合

利用Google Analytics与网站运营优化

1 什么是Google Analytics Google官方解释是:Google Analytics(分析)向您显示人们如何找到和浏览您的网站以及您能如何改善访问者的体验.提高您的网站投资回报率.增加转换,在网上获取更多收益. 您的免费 Google Analytics(分析)帐户有 80 多个报告,可对您整个网站的访问者进行跟踪,并能持续跟踪您的营销广告系列的效果:不论是 AdWords 广告系列.电子邮件广告系列,还是任何其他广告计划.利用此信息,您将了解哪些关键字真正起作用.哪些广告词最有

浅谈如何利用博客对网站进行优化

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 SEO优化的方法很多,我们现在简单的谈一下用博客做SEO优化的方法. 首先我们要了解,博客优化的思路,博客优化的基本思路就是通过优化自己的博客,让自己的博客有很多流量.从间接让你的网站带来流量.搞清楚的博客优化的思路,下面我个人几个关键说说. 1:常用的博客有哪些 常用的几个博客就是新浪.百度空间.网易.搜狐.和讯.中国博客.企博.微薄等.我

如何利用外链进行网站SEO优化

外链能够对网站起到引流的作用,在一定程度上对网站SEO优化排名有一定的作用,对于外链的含义和一些需要注意的准则,小码微视,只说干货不拉家常. 何为外链?对于外链通俗点来讲就是外部链接导入,外链对于网站优化来说是一个漫长的过程,外链的质量能间接的影响网站在搜索引擎排名,一股脑的去发大量的外链是没有任何意义的,量不在于多而在于精.   第一:外链相关性 外链相关性指的是两个网站主题一致,外链相对于别人对网站的一个投票操作,相关性最高的外链我们可以把它理解为第一级相关性外链,无任何关联的网站外链对我们

网站内容优化:关键词分析工具

内容优化仍是目前SEO活动最关注的,因为你会不断地为网站或是博客增加内容,因此总有新的机会可以改善搜索引擎的可视度.但要在任何网站找到正确的词汇,你就必须进行固定的.深入的关键词研究. 你必须理解不同词汇之间的关系,了解人们在搜索商品和服务时如果把这些词汇加到网站的内容中.在上个专栏<内容优化:关键词提示工具>一文中,我介绍了如何建立关键词列表和一些常用的.免费的关键词提示工具,诸如Quintura, Google Suggest, Yahoo Search Suggest, Google T

网站模板优化测试细节分析

模板在优化当中的作用:模板几乎决定了网站内容的布局,决定了我们网站的用户体验.决定了我们网站提供的这些具体功能的位置.所以 说模板非茶的重要.那么我们会做模板是作为一个SEO的基本的要求.这个当然不是要说让大家去做模板,不是这个意思.作为一个SEO是一个 网站的构建师. 在我们的心中要知道网站大概要做成什么样子,网站大概是哪个地方放什么,那么这些事情我觉得应该是由SEO来决定的.SEO 应该是有主导权和权威性的.所以说模板非常重要,重要的特点在于关于模板的策划以及模板的具体事情的划分都是由SEO

PHP 优化配置——加速你的VBB,phpwind,Discuz,IPB,MolyX第1/2页_php技巧

让论坛速度更快 PHP加速设置 PHP加速:Zend Optimizer优化PHP程序 Zend Optimizer V2.5.7 For Windows  软件语言:英文 运行环境:Win9x/NT/2000/XP Zend Optimizer V2.5.7 For Windows软件介绍: Zend Optimizer用优化代码的方法来提高PHP 4.0应用程序的执行速度.实现的原理是对那些在被最终执行之前由运行编译器(Run-Time Compiler)产生的代码进行优化.一般情况下,执行

利用Memcached在php下实现session机制 替换PHP的原生session支持_php技巧

方法文件 session实现文件:memcachedsession.php 实现原理(也是PHP内部session的实现原理): 1.先判断客户端有没有sessionid, a.没有就添加一个sessionid给客户端,通常是32位hash码,同时初始化一个数组做session容器 b.如果客户端有sessionid,则利用这个sessionid去memcached里面查数据. 2.用户在页面执行过程中可以自行修改session容器里的session值 3.页面最后会把用户的session容器作