网站优化方案:css
从减小HTTP请求数量方面考虑:
java
最基本,最重要的一条:能放入单个TCP/IP包中的字节数是1160。正则表达式
1、图片文件优化方案:数组
- 对于大量公用的小图片,采用合并方式(将小图片合并成一个大图片)。
- 利用CSS的background-position 属性进行设置
示例:<div style="width:16px;height:16px;background-image: url(../img/iknow/icons.gif);background-position:0 -32px;"></div>
每一个小图片的长宽分别是16px,因此显示第一个图片坐标就是0 0,第二个图片的坐标是:0 -16px,第三个图片的坐标是0 -32px,以此类推……
2、js文件优化方案浏览器
- 首先将全部js文件进行压缩优化。
- 查询全部页面引用的js文件信息。将其记录到一个txt文件中。
- 将全部页面上引用的js文件信息分类。
- 合并分类的js文件。
- 替换引用HTML文件中引用js地址信息。
3、css文件优化方案:缓存
- 首先将项目中的全部css进行压缩优化。
- 查询页面中引用css文件信息。
- 将引用信息分类。
- 合并分类的css文件。
- 替换页面中引用css的相应地址。
4、jsp页面的优化 服务器
- 去除jsp页面中无用的空行、tab符、空格符。
从程序执行上考虑:session
1、Html和Css执行效率:闭包
- 标记善始善终.
- 删除无用的空格、tab、空行。
- 若是要处理绝对位置的元素,diaplay和visibility具备一样的效果,使用visibility会更快。
- 把 CSS 放到代码页上端.和用户访问指望有关。CSS 放到最顶部,浏览器可以有针对性的对 HTML 页面从顶到下进行解析和渲染。
- 避免 CSS 表达式.
- 从页面中剥离 JavaScript 与 CSS;
- 避免使用Filter.
- 使用 <link> 而不是@importChoose <link> over @import 在 IE 中 @import 指令等同于把 link 标记写在 HTML 的底部。
1、js执行效率:jsp
优化原则:
- 尽可能减小没必要要的对象建立。
- 多字符串链接时用Array.join()替换 string += "XX"; ,提高速度,也即自定义一个StringBuilder()或者StringBuffer()方法,用法与java中的StringBuilder()方法相同。
- 变量名尽可能使用最短的字符表示,尽可能一次定义多个变量。
如:function fun(username,userage){alert(username+userage);}
应为:function fun(a1,a2){alert(a+b);}
- 替换布尔值: 如:1替换ture,0替换false
- 缩短否认检测: 如:if(name == null){} 替换为:if(!name){}
- 使用数组和对象字面量:
如:var test = new Array; 替换为:var test = [];
var test = new Object; 替换为:var test = {};
- 注意变量的做用域范围,局部变量的速度要比全局变量的访问速度更快。
- 使用for(;;),while(),for(in)三种循环时应尽可能避免使用for(in)方法,
若是是循环变量递增或递减,不要单独对循环变量赋值,应该在它最后一次读取的时候使用嵌套的++或--操做符。
若是要与数组的长度做比较,应该事先把数组的length属性放入一个局部变量中,减小查询次数,尽可能避免with语句。
- 不使用Eval,使用eval至关于在运行时再次调用解释引擎对内容进行运行,须要消耗大量时间。这时候使用JavaScript所支持的闭包能够实现函数模版。
- 减小对象查找,由于JavaScript的解释性,因此a.b.c.d.e,须要进行至少4次查询操做,先检查a再检查a中的b,再检查b中的c,如此往下。因此若是这样的表达式重复出现,只要可能,应该尽可能少出现这样的表达式,能够利用局部变量,把它放入一个临时的地方进行查询。这一点能够和循环结合起来,由于咱们经常要根据字符串、数组的长度进行循环,而一般这个长度是不变的,好比每次查询a.length,就要额外进行一个操做,而预先把var len=a.length,则就少了一次查询。
- 类型转换
把数字转换成字符串,应用 "" + 1,虽然看起来比较丑一点,但事实上这个效率是最高的,性能上来讲:("" + ) > String() > .toString() > new String();
浮点数转换成整型,这个更容易出错,不少人喜欢使用parseInt(),其实parseInt()是用于将字符串转换成数字,而不是浮点数和整型之间的转换,咱们应该使用Math.floor()或者Math.round()。Math是内部对象,因此Math.floor()其实并无多少查询方法和调用的时间,速度是最快的。
对于自定义的对象,若是定义了toString()方法来进行类型转换的话,推荐显式调用toString(),由于内部的操做在尝试全部可能性以后,会尝试对象的toString()方法尝试可否转化为String,因此直接调用这个方法效率会更高。
- 使用直接量,JavaScript支持使用[param,param,param,...]来直接表达一个数组,以往咱们都使用new Array(param,param,...),使用前者是引擎直接解释的,后者要调用一个Array内部构造器,因此要略微快一点点。一样,var foo = {}的方式也比var foo = new Object();快,var reg = /../;要比var reg=new RegExp()快。
- 字符串遍历操做,对字符串进行循环操做,譬如替换、查找,应使用正则表达式,由于自己JavaScript的循环速度就比较慢,而正则表达式的操做是用C写成的语言的API,性能很好。
- 高级对象,自定义高级对象和Date、RegExp对象在构造时都会消耗大量时间。若是能够复用,应采用缓存的方式。
- 定时器,若是针对的是不断运行的代码,不该该使用setTimeout,而应该是用setInterval。
- 插入HTML内容时候尽可能找容器进行innerHTML操做,而尽可能避免使用document.write();
- 对象查询,使用[""]查询要比.items()更快,这和前面的减小对象查找的思路是同样的,调用.items()增长了一次查询和函数的调用。
- 建立DOM节点,建立页面元素时应该是用document.createElement()方法,而若是文档中存在现成的样板节点,应该是用cloneNode()方法,由于使用createElement()方法以后,你须要设置屡次元素的属性,使用cloneNode()则能够减小属性的设置次数——一样若是须要建立不少元素,应该先准备一个样板节点。
- 尽可能用switch代替2个以上条件的if。
- 尽可能减小else if语句数量,将条件按二叉树方式排列。用if语句和多个else语句时,可能性越大的状况越往前放。
- 优先使用内置方法.
- 节约使用DOM操做,如:若要在DOM树中添加A节点,A中又包含其余子节点,尽可能先把全部子节点添加到A中后,再把A添加到DOM树中。
- 操做css样式时注意如下问题:
diaplay和visibility具备一样的效果,使用visibility会更快。
2、jsp执行效率:
优化原则:
- 选择正确的页面包含机制:在JSP中有两种方法能够用来包含另外一个页面:一、使用include指示符(<%@ includee file=”test.jsp” %>)。二、使用jsp指示符(<jsp:includee page=”test.jsp” flush=”true”/>)。在实际中我发现,若是使用第一种方法的话,可使得系统性能更高。
- 关闭服务器Servlet/JSP自动重载技术功能。
- 正确地肯定javabean的生命周期:
- 在servlet的init()方法中缓存数据
- 不要滥用HttpSession,若是没有必要,就应该关闭JSP页面中对HttpSession的缺省设置执行代码:<%@ page session="false"%>,当你不须要HttpSession时,尽快地释放它:当你再也不须要session时,你能够经过调用HttpSession.invalidate()方法来释放它。尽可能将session的超时时间设得短一点。
- 将页面输出进行压缩:有的浏览器支持gzip(GNU zip)进行来对HTML文件进行压缩,这种方法能够戏剧性地减小HTML文件的下载时间。所以,若是你将servlet或JSP页面生成的HTML页面进行压缩的话,那用户就会以为页面浏览速度会很是快。但不幸的是,不是全部的浏览器都支持gzip压缩,但你能够经过在你的程序中检查客户的浏览器是否支持它。
- 正确地肯定javabean的生命周期,缺省的生命周期为page。若是没有正确地选择bean的生命周期的话,它将影响系统的性能。若是你只想在一次请求中使用某个bean,但你却将这个bean的生命周期设置成了session,那当此次请求结束后,这个bean将仍然保留在内存中,除非session超时或用户关闭浏览器。这样会耗费必定的内存,并没有谓的增长了JVM垃圾收集器的工做量。所以为bean设置正确的生命周期,并在bean的使命结束后尽快地清理它们,会使用系统性能有一个提升。
3、图片优化效率:
- 从新检查图片的大小,若是图片切割的不合理,从新进行切片。