ASP.NET性能优化(三)动静分离

  “如何在不影响使用的情况下尽量减少用户对web服务器的请求数?”这是提高web服务器性能一个很简单但很有效的方法。常用的方法有以下几种:

1、合并js文件,将多个小文件放在一个文件中一次下载;

2、合并图片。将web页面中的各种小图标合并成一个大图片,然后在需要显示图标的地方通过CSS定位显示相应的图标。具体做法可参见这篇文章:http://www.ruanyifeng.com/blog/2008/05/css_background_image_positioning.html

 

  这两种方法简单显很有效,很多网站都采用了这种方法。但我今天要介绍的是通过设置IIS的方式,让这些文件在第二次被请求时Web服务器根本不用对其作任何处理,从而极大地提高网站的吞吐量。

我们先来看看一般的做法是怎样的(假设需要在页面中显示一张图片):

代码
<img src="images/100_1135.JPG"/>

 这样当我两次请求这个页面时,服务器的处理结果如下:

 

    我们发现,第二次请求时,请求图片的状态码变成了304。这就是说当用户请求此图片时,IIS会检查服务器上有无此图片的最新版本,发现没有就返回304给浏览器,浏览器取本地缓存中的数据。咋一看,好象没什么问题,因为图片取的是本地缓存,并没有造成流量。但仔细一想,你会发现能不能让服务器不去做这次版本检查呢,版本检查也是要耗资源的,并且这种静态文件每次都做版本检查是完全没有必要的。通过IIS的“启用内容过期”可以很好地解决此问题。

首先,建立一个新的站点,将静态文件放于其中。

然后,对此静态文件站点做如下设置以启用内容过期功能:

当然,web页面中静态文件的引用路径也要做相应修改:

代码
<img src="http://localhost.:81/images/100_1135.JPG" />

 

验证结果:

我们发现,第二次请求时,服务器根本没有对静态文件作任何处理,浏览器直接取的本地缓存数据(直到上图中设置的过期时间或是本地缓存被清除后才会再次处理)。

 

小结:

    通过这样设置动态文件和静态文件分离,当用户在第二次访问我们的站点时可以完全忽略对静态文件的处理,从而大大降低了请求数量。在前不久我们做的一个项目中,通过这种方法,使用户在第二次访问时请求数一下子下降了30%之多,对web服务器的性能提升十分明显。

posted @ 2009-11-29 22:55 atao.xiang 阅读(433) 评论(0) 编辑 收藏

公告