技术开发 频道

优化Web站点资源措施



放置资源于自由释放cookie的域上
如果你设置了许多的cookies,页面请求头部增大很多,因此那些cookies和每个请求是一起发送的。另外,你的网站的资源中或许没有用到那些cookies,因此这些信心将会毫无理由的重复发送到客户端。有时候,那些头部甚至比请求还大,这是很费资源的。想想要下载几个小的图标,他们只有半个KB,而请求他们的HTTP头就有1KB.
如果你使用子域来持有你的资源,你需要保证你设置的cookies是为你的标准域名准备的(如www.example.org)而不是为了上级域名而设置的(如example.org)。这样的话,你的子域就会释放cookie。如果你试着来提升一个现有的站点的性能,并且你已经在上级域名上设置cookies,你就可以考虑在一个新的域名上持有你站点的资源,而不是放在子域上。
分布资源到不同的域上
是时候让你决定在i1.example.org放置什么资源,在i2.example.org上放置什么资源了,关于这点没有明确的规定。只需要确保当每个请求来的时候,你不是随机的从两个域上下载资源,因为这会导致相同的资源被下载两次,from i1一次,from i2一次。
你可以根据文件的大小来分割站点资源,或者通过其它的标准,只要根据你的页面情况有意义就好。你也可以选择将所有的内容图片(包括HTML中有<img />标签的)放在i1上,所有的布局图片的内容放在i2上,虽然在一些情况下这种解决方案不是最优的。在这种情况下,浏览器将会下载处理CSS文件,然后根据那些需要应用的规则,将会选择仅仅下载样式表所需要的那些图片。问题在于那些没有CSS引用的图片将没有立即下载,因此服务器上的负载就可能不平衡。
决定如何分配站点资源的最好方法通过实验:你可以使用Firebug的Net面板来监视资源下载的结果,然后觉定如何在不同的域上分配资源,以便加速下载速度。
设置DNS查找
既然你已经决定每页的请求不会超过四个DNS查找,那么在你的网页上整合第三方的内容或许是一件非常聪明的事情,如Flickr网站上的图片或者广告,这些都是在第三方服务器上的。但是,超链接到其它网站上的图片(通过设置你页面的<img />标签,src属性指向其它服务器的文件)不仅盗取了人家的待跨,还会影响你自己页面的性能,因为额外多了一个DNS查找。
如果你的网站包含有用户生成的内容(举个例子,如论坛),你就不能简单的说减少多次DNS查找,因为用户可能发送网上任何地方的图片。你可以写一个脚本复制用户提交的每个图片到你的服务器,但是这种方法是非常复杂的。
举个例子,在phpBB 论坛软件 中,你可以设置用户是否需要链接他们的图片或者上传他们的图片到服务器。在这中情况下,对于你的网站来说,上传他们的图片到服务器有利于提升你网站性能。
使用有过期时间设置的头部
为了追求更好的性能,你的静态资源应该完全静态。这个意思就是说没有动态生成的脚本和样式。或者<img>标签指向生成动态图片的脚本。如果你有这么的一个需求,举个例子,你想生成一个图像包括你网站访问者的用户名。这个动态的效果可以做成“脱机”静态的,结果以静态的隐藏。在这个例子中,你可以在用户登录的时候,立即生成图片。你也可以在文件系统中储存那些图片,将图片路径写到数据库中。另外一个替代的方法就是安排一个自动的处理过程,生成动态成分,然后以静态的文件保存他们。
如果一个页面全部是静态的话,你就可以在头部设置一个过期的时间,因此当你的这个页面已经下载,就在浏览器的缓存器中,不会再进行第二次请求了(或者说要经过很长一段时间,下面我们将会说到)。
设置一个过期的头部在Apache中是很简单的:增加一个.htaccess文件,这个文件包括下面的一些命令,并把它放到i1 和i2 子域根目录文件夹里:
ExpiresActive On
ExpiresDefault "modification plus 10 years"
第一个命令使得Expires头部的生成是可用的。第二个设置了在该文件被修改后,它的过期时间是10年,另外一种解释是当你复制这个文件到服务器后,它的有效期是10年。你也可以使用这个设置"access plus 10 years",意思就是说在用户第一次请求该文件后,过期时间是10年。
如果你想的话,你可以甚至设置每个文件类型的过期时间
ExpiresActive On
ExpiresByType application/x-
javascript "modification plus 2 years"
ExpiresByType text/css "modification plus 5 years"
更多的信息,点击Apache documentation on mod_expires.
0
相关文章