文章系统图片系统下载系统个人求职企业招聘房产系统展会系统供求系统产品系统商城系统自定义系统后台一览
解决方案
建站知识
提高ASP.NET网站性能的方法
来源:网络作者:网络
将静态内容的缓存周期设的长些

静态文件可以设置一个长的缓存周期,比如一个月。如果你认为你应该缓存两天,这样当你改变了文件后,用户就可以很快的得到新的文件,这就你错了,当你更新了一个被expires缓存的文件后,新用户会立即得到更改后的文件,而老用户只有在缓存到期后才能得到更改后的文件。所以只要你应用了Expires去缓存静态文件,就应该将过期周期设的尽可能地大。

例如如果你将一个静态文件的缓存周期设为三天,一个用户A在今天访问页面并将其缓存三天,另一个用户B在明天访问页面并同样缓存页面。所以如果你在后天改变了文件,那么用户A将会在第四天看到新文件,用户B将会在第五天看到新文件,这就会导致不同的用户看到不同的文件,这不是我们想要的结果,所以如果我们更改了文件并将想让用户立即看到更改后的文件,我们应该通过不同的URL来访问文件。

使用缓存友好地目录结构

尽量将需要缓存的文件放在一个目录中,例如将所有的image放在images目录中,而不是分别放在不同的目录中,这样我们就要以在整个网站中使用一致的URL来请求图片。

重用公共图片

有时我们为了少写一些路径,会将一个公共图片放到许多不同的目录中,这样我们就会在文件中只使用图片名来引用图片,而不是基于相同路径,这样做虽说方便了我们的书写,却不是缓存友好的,公共文件的每一个copy都会在缓存中缓存一份。所以我们需要做的就是将公共文件放到一个统一的目录中,在页面中使用相对路径来引用它。

当你修改静态文件后,记得修改文件名

当你修改了一个静态文件后,不要以为修改好了文件就万事大吉了,因为静态文件会在客户端缓存,所以当你修改了静态文件后,一定要记得为其重命名,因为这样可 以确保用户可以立即看到你修改后的文件,而不是缓存了浏览器缓存中的修改前的文件。

使用版本号去访问静态文件

如果你不想每次修改静态文件名后都为其重命名,那么你也可以使用带版本号的URL去访问静态文件,例如GIF文件可以通过带哑查询字符中的URL访问,你可以通过/images/1.gif?v=1去访问1.gif文件,当1.gif文件改变后,你要以通过/images/1.gif?v=2来访问1.gif文件,这样也可以保证用户会立即看到修改后的文件。

将缓存文件放在单独的域中

将缓存文件放在一个单独的域中是一个好主意。首先浏览器也以并发的请求静态文件。其次你不必发送cookies给静态文件,当你将静态文件和应用程序放在同一个域中时,浏览器会在你请求静态文件时,将应用程序产生的cookies也一并发送,而这些cookies对静态文件不是必须的。所以如果我们将静态文件单独放在一个域中,就要以将避免发送这些cookies。

SSL 是非缓存的,所以请适当使用

SSL是非缓存的,所以不要通过SSL请求静态文件,另外,我们仅应该在登录页面和支付页面这样的情境下使用SSL,除此之外不应该在程序中使用SSL。SSL需要加密请求和响应,所以增加了服务器的负担,同时加密后的响应内容也更长,会占用更多的带宽。

HTTP POST请求不会被缓存

浏览器只会缓存Http Get请求,不会缓存Http Post请求,所以如果你想要缓存一个文件时,请确保以http get方式请求文件。

显示指明Content-Length 属性

当你通过web service或是http hadler请求一个动态内容时,请确保设置了response header的content-length属性。当浏览器从响应的header中读取到content-lengtg属性时,它会对响应做一些优化以加快下载速度。当指定了content-length后,浏览器会使用持续的连接请求资源,这就避免了浏览器针对每次请求都新建连接。

如何在IIS中缓存静态内容

在IIS管理器中,右击应用程序名,选择“属性”,我们可以看到下图:

image

选择“启用内容过期”就可以缓存静态内容了。具体的设置很简单,这里就不说了。