提搞网站访问速度可做哪些优化小结
程序员文章站
2023-12-01 17:51:22
如何让您的网站访问速度更快,下面是从服务器运行环境与程序结合总结了以下几点。... 10-07-22...
一、 服务器优化
windows系列:
64位win2008r2 + hpyer-v + 负载均衡 + iis7.5
64位win2003 + 虚拟机 + 负载均衡 + iis6
禁止服务器访问外网。关掉不必要的端口。
去掉每个磁盘的所有权限,只保留administrators组和system完全控制权限。
iis7.5标识使用applicationpoolidentity,给目录权限用户是:iis apppool\站点名
iis6需要为每个站点建独立的用户,为iis用户单独设置权限。
iis禁止日志记录。
二、 数据库优化
l 64位mssql2008:
少用触发器/游标/外键。多用存贮过程和视图。适量使用索引查询速度会提高很多,每个表的索引尽量不要超过3个。
定时查看死锁的进程和等待进程,并清除,还要及时修正死锁的来源。
复杂的统计报表需要用计划去跑。
查询记录数要使用count(0) 不要使用count(*)。
select的时候表字段不要使用*。*查询所有字段是很慢的。
如果字段是索引列可使用union all 替代 or,走索引线路查询。
大记录集要使用分页查询。
尽量不要使用text/ntext类型,要使用varchar(max)/nvarchar(max)。
尽量不要使用临时表,要使用table表类型或内嵌视图。
三、 后端优化
l 多使用dbdatareader,尽量不要使用datatable/dataset读取数据。
l for (int i = 0; i < dt.rows.count; i++) 应该这么写:
for (int i = 0, len = dt.rows.count; i < len; i++)或
foreach (datarow info in dt.rows)推荐这种写法
l 少用try catch,用到try catch时要和 finally一起使用。
l 多使用using如:
using (dbdatareader dr = data.getdbdatareader(strsql)) { while (dr.read()) { }; }
l 大字符串操作请使用stringbuilder 少使用string,字符串比较用compare,字符串相加用concat,大字符串相加用stringbuilder append。
l 变量要在先定义在使用,不要在循环内定义变量。如:
错误的写法是:for (int i = 1; i < 10; i++) { string s = i.tostring(); }
正确写法:string s = string.empty; for (int i = 1; i < 10; i++) { s = i.tostring(); }
这里还有一个地方要注意的:在字符串相加的时候,如果有int类型的要先转成string类型在相加,减少不必要的装箱拆箱操作。
l 如果你使用的是html控件,需要禁用<%@ page enableviewstate="false" autoeventwireup="false" enablesessionstate="false",web.config <pages enableviewstate="false" enablesessionstate="false" />
l 使用foreach替代for
l 操作数据库要使用存贮过程/视图。
l 多使用cache对数据缓存。这才是最关键的。net提供:httpcontext.current.cache/httpruntime.cache,共享缓存有velocity/ memcached
l 可使用<%@ outputcache duration="60" 缓存页面,可使用response.bufferoutput = true;/ <%@ page buffer="true" 输出缓冲。
l 可将站点生成静态面页,好处多多。
l 可使用url重写成伪静态,提供rss/baidu-sitemap/google-sitemap服务,有利于搜索引擎收录。
l ajax调用页面要使用.ashx一般处理程序,速度要比.aspx文件要快。ajax请求要使用post不要使用get。
l 发布站点时dll要release版本,不要用debug版本。
l iis需要使用集成模式,不要使用经典模式。
l web.config 加 <customerrors mode="on" /> 关闭错误提示。
l web.config 加 <compilation debug="false" /> 关闭调试模式。
l 使用server.transfer替换response.redirect
l 多使用泛型集合操作,少用arraylist。
四、 前端优化
l 最好不使用net控件,用html控件,页面使用css+div布局。
l 使用json + ajax进行数据交互。
l 要学会使用jquery提高开发速度。
l 尽量少用<img标记,改用background样式控制背景图片。这样做的好处是方便扩展多皮肤。
l 将css background背景图片多张合并成一张图片,保证合并后的图片大小不要超过50k。可将js文件合并在一个js文件中,然后使用closure_packer_yui_compiler进行压缩,这样做的好处是可减少客户端连接数。
l js代码段不要放在html页面,应该放在独立的js文件里面,好处是js文件可以cdn/缓存。
l 可将css文件放到<head></head>之间,js文件或代码放到</body>之前,让页面先显示在执行js。
l 可将网站的图片/css/js/资料/资源放到独立的站点,做下cdn加速,二级域名会有cookies,最好使用一级域名。
l a标记和img标记需要加上title/alt,<head>标签内需要加title/keywords/description/rss/sitemap优化,有利于搜索引擎收录。
l 页面可启用gzip压缩。
l 安装ff的插件“yslow/page speed”。
五、 其它优化
windows系列:
64位win2008r2 + hpyer-v + 负载均衡 + iis7.5
64位win2003 + 虚拟机 + 负载均衡 + iis6
禁止服务器访问外网。关掉不必要的端口。
去掉每个磁盘的所有权限,只保留administrators组和system完全控制权限。
iis7.5标识使用applicationpoolidentity,给目录权限用户是:iis apppool\站点名
iis6需要为每个站点建独立的用户,为iis用户单独设置权限。
iis禁止日志记录。
二、 数据库优化
l 64位mssql2008:
少用触发器/游标/外键。多用存贮过程和视图。适量使用索引查询速度会提高很多,每个表的索引尽量不要超过3个。
定时查看死锁的进程和等待进程,并清除,还要及时修正死锁的来源。
复杂的统计报表需要用计划去跑。
查询记录数要使用count(0) 不要使用count(*)。
select的时候表字段不要使用*。*查询所有字段是很慢的。
如果字段是索引列可使用union all 替代 or,走索引线路查询。
大记录集要使用分页查询。
尽量不要使用text/ntext类型,要使用varchar(max)/nvarchar(max)。
尽量不要使用临时表,要使用table表类型或内嵌视图。
三、 后端优化
l 多使用dbdatareader,尽量不要使用datatable/dataset读取数据。
l for (int i = 0; i < dt.rows.count; i++) 应该这么写:
for (int i = 0, len = dt.rows.count; i < len; i++)或
foreach (datarow info in dt.rows)推荐这种写法
l 少用try catch,用到try catch时要和 finally一起使用。
l 多使用using如:
using (dbdatareader dr = data.getdbdatareader(strsql)) { while (dr.read()) { }; }
l 大字符串操作请使用stringbuilder 少使用string,字符串比较用compare,字符串相加用concat,大字符串相加用stringbuilder append。
l 变量要在先定义在使用,不要在循环内定义变量。如:
错误的写法是:for (int i = 1; i < 10; i++) { string s = i.tostring(); }
正确写法:string s = string.empty; for (int i = 1; i < 10; i++) { s = i.tostring(); }
这里还有一个地方要注意的:在字符串相加的时候,如果有int类型的要先转成string类型在相加,减少不必要的装箱拆箱操作。
l 如果你使用的是html控件,需要禁用<%@ page enableviewstate="false" autoeventwireup="false" enablesessionstate="false",web.config <pages enableviewstate="false" enablesessionstate="false" />
l 使用foreach替代for
l 操作数据库要使用存贮过程/视图。
l 多使用cache对数据缓存。这才是最关键的。net提供:httpcontext.current.cache/httpruntime.cache,共享缓存有velocity/ memcached
l 可使用<%@ outputcache duration="60" 缓存页面,可使用response.bufferoutput = true;/ <%@ page buffer="true" 输出缓冲。
l 可将站点生成静态面页,好处多多。
l 可使用url重写成伪静态,提供rss/baidu-sitemap/google-sitemap服务,有利于搜索引擎收录。
l ajax调用页面要使用.ashx一般处理程序,速度要比.aspx文件要快。ajax请求要使用post不要使用get。
l 发布站点时dll要release版本,不要用debug版本。
l iis需要使用集成模式,不要使用经典模式。
l web.config 加 <customerrors mode="on" /> 关闭错误提示。
l web.config 加 <compilation debug="false" /> 关闭调试模式。
l 使用server.transfer替换response.redirect
l 多使用泛型集合操作,少用arraylist。
四、 前端优化
l 最好不使用net控件,用html控件,页面使用css+div布局。
l 使用json + ajax进行数据交互。
l 要学会使用jquery提高开发速度。
l 尽量少用<img标记,改用background样式控制背景图片。这样做的好处是方便扩展多皮肤。
l 将css background背景图片多张合并成一张图片,保证合并后的图片大小不要超过50k。可将js文件合并在一个js文件中,然后使用closure_packer_yui_compiler进行压缩,这样做的好处是可减少客户端连接数。
l js代码段不要放在html页面,应该放在独立的js文件里面,好处是js文件可以cdn/缓存。
l 可将css文件放到<head></head>之间,js文件或代码放到</body>之前,让页面先显示在执行js。
l 可将网站的图片/css/js/资料/资源放到独立的站点,做下cdn加速,二级域名会有cookies,最好使用一级域名。
l a标记和img标记需要加上title/alt,<head>标签内需要加title/keywords/description/rss/sitemap优化,有利于搜索引擎收录。
l 页面可启用gzip压缩。
l 安装ff的插件“yslow/page speed”。
五、 其它优化
上一篇: 从线路说起国外虚拟主机选购经验
下一篇: 编程员主要做些什么(学程序员需要的基础)