《高性能网站建设指南》笔记3

使用内容发布网络CDN

如果应用程序web服务器离用户更近,则一个HTTP请求的响应时间将缩短。另一方面,如果组件的web服务器离用户更近,则多个HTTP请求的响应时间将缩短。
内容发布网络CDN(Content Delivery Network)是一组分布在多个不提那个地理位置的web服务器,用于更多有效地向用户发布内容。

在设计web页面的时候,首次访问的响应时间并不是唯一需要考虑的。对于一个用户经常使用的网站,用户会进行很多的HTTP请求,但通过使用一个长久的Expires头,是这些组件可以被缓存。
这会在后面的HTTP页面请求中减少大量的组件请求。
Expires常用在图片,样式表,脚本等静态文件上。

Max-Age 和 mod_expires

Expires可以控制组件的过期时间,需要提及除了Expires头之外的另一种选择。HTTP1.1引入了Cache-Control头克服Expires头限制。
因为Expires头使用一个特定的时间,它要求服务器和客户端的时钟严格同步。另外,过期日期需要经常检查,并且一旦未来一天到了,这需要在服务器配置中提供一个新的日期。
换一种方式,Cache-Control使用了Max-Age指令指定组件被缓存多久。它意秒为单位。max-age支持HTTP 1.1
APACHE mode_expires模块可以很方便的修改这些配置参数。

如何修订文件名

如果使用了HTTP的缓存策略,即使在服务器上更新了组件,已经访问过网站的用户也不太可能获取最新的组件。
最有效的觉得方案是修改其所有链接,这样,全新的请求将从原始服务器下载最新的内容。

压缩组件

如果HTTP请求产生的响应包很小,传输时间就会减少,因为只需要将很小的包从服务器传递到客户端。这一效果对国内网络明显。
压缩是减少发送请求的最简单也是最有效的方法,很有很多方式参考,取出HTML和脚本的注释,压缩HTML代码。

用户减少文件体积的文件压缩已经在Email应用和FTP站点中使用了10年,同样的技术也可以用于向浏览器发布压缩的Web页面。
从HTTP1.1开始,Web客户端可以通过HTTP请求的Accept-Encodeing头来标示对压缩的支持。

压缩内容的选择

很多网站学选择压缩HTML文档,压缩脚本和样式表也是非常推崇的,一般来讲不会对图片和PDF压缩,因为它们已经压缩过了,如果一定要压缩这些文件只会增加CPU的开销。
gzip是典型的压缩方式,是GUN开发的一种免费格式。可以配置APACHE 1.3的mod_gzip模块来压缩选择的内容,在apache 2.x的mod_deflate模块来压缩。
如果客户端是通过代理缓存来浏览服务器的资源时,可能会存在问题。
比如,请求的浏览器不支持压缩,但是代理缓存支持压缩,服务器最终反馈回来的代码到用户的浏览器可能无法阅读。

将样式表放在顶部

由于组件通常是按照它们在文档中出现的顺序下载的,从而得到一个加载很快的页面。果真如此吗?
IE仍然是最流行的浏览器,实际产生的页面比原来预想的要慢。
进度指示器有3个主要优势:它们让用户知道系统没有崩溃,只是正在为他或她解决问题;它们指出了用户大概还需要等多久,以便用户能够在漫长的等待中做些其他的事情;
最后,它们能够提供用户一些可以看的东西,使得等待不再那么漫长。

将样式表放在文档的底部会导致在浏览器中阻止内容逐步呈现。为避免当样式变化时重绘页面中的元素,浏览器会组织内容逐步呈现。

将脚本(javascript)放在底部

前面介绍了将样式表放在页面的底部会阻碍页面逐步呈现,以及如何通过将其移至文档的HEAD中来解决这一问题。脚本(外部的javascript文件)会引起类似的问题,
但解决方案恰好相反—-最好将脚本从页面的头部移到底部(如果可以的话)。这样页面既可以逐步呈现,也可以提高下载的并行度。
·1将脚本放在页面越靠下的地方,意味着越多的内容能够逐步呈现。

避免CSS表达式

使用外部javascript和 css
严格从一次访问的角度来讲,所有的组件放在一个HTML下载速度是最快的,这样会减少组件的请求数,
但是考虑到网站的使用频率和服务器的缓存设置,因此可以把css和js打包当做组件放在外部文件中。

 

Tags: , , , , , , ,

Comments

No comments so far.
  • Leave a Reply
     
    Your gravatar
    Your Name
     
     
     
     
     
 
About This Website

Lamp development & SEO & Plan of Website & Project Managment

Learn more »
Follow Us (SNS)
Help & Support

more about Bruce.xu»

Get in touch

QQ: +252339382
Email: shjuto @ gmail.com

Online contact form »