`
wei5201
  • 浏览: 185143 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

网页性能优化心得

阅读更多
页面性能优化的的几大注意要素
1.尽可能的减少页面的请求数,通过firebug可以发现大部分页面加载时间都消耗在请求等待的时间上,而不是在数据下载上,所以尽量压缩合并您项目中的js,css等文件吧;再提一点
就是一般我们都会在页面上引入类似于header.jsp的页面,用来存储公用的js等,但是请注意如果滥用的话,是会增加请求数目的,所以请移除某些重复引用的文件.
2.缓存控制一定得加上,如果不加控制的话,一般浏览器默认缓存时间大概为10分钟左右,所以你必须得控制缓存的过期时间,一般来说,给'js,css,以及图片'加上缓存控制就可以了.
3.一般mis系统,能使用数据库操作工具,比如hibernate,ibatis等得缓存机制的一定得使用,这样在大数据量操作的时候,能够加快客户端加载时间,提高客户体验.
4.使用重定向会消耗一定的等待时间.所以请尽量避免使用.
5.网页中请尽量使用get方式提交数据,其中包括ajax请求(post请求有两个过程,1发送请求headers,2发送请求数据,根据http规范,get请求只会发送一个tcp包).--------这一段话来自yahoo)
6.独立js,css,这样做的好处就是我们可以使这些文件置于缓存状态.这样做看上去是增加的请求的次数,但是由于第一次请求之后该部分数据已经被缓存,
所以第二次就无需再请求后端,减少了网络带宽的开销.
7.图片类的静态文件能够使用另外的服务器进行域分离的话,那是最好的了.减轻了服务器的压力.
8.优化浏览器的加载策略.使用css在页面顶部加载,js在页面底部加载.这样做原因很简单:1) css如果不放在顶部加载,ie等浏览器会中止内容的有序呈现。
浏览器中止呈现是为了避免样式改变引起的页面元素重绘。2)js如果不在底部加载,那么当页面加载js的时候,带来的问题就是它阻止了页面的平行下载。
HTTP/1.1 规范建议,浏览器每个主机名的并行下载内容不超过两个。如果你的图片放在多个主机名上,你可以在每个并行下载中同时下载2个以上的文件。
但是当下载脚本时,浏览器就不会同时下载其它文件了,即便是主机名不相同。这对于图片,影响类网站影响较大.
9.最后就是 减少 减少DNS查找 ,DNS耗费的时间是相当可观的,因此同一页面的域名数量最好控制在2~4之间。


以上1,2,3,6,8点在企业的中小型mis系统中都是 挺重要和相对容易实现的.
1.对js等文件的压缩,可以采用工具进行,见附件,压缩js时候请注意引用的顺序限制.
2.缓存控制 使用 filter 设置类似 response.setHeader("Cache-Control", "max-age=3600");  的代码,详细叙述如下:
<filter>
		<filter-name>cacheFilter</filter-name>
		<filter-class>PageCacheFilter</filter-class>
		<init-param>
			<param-name>js</param-name>
			<param-value>36000</param-value>
		</init-param>
		<init-param>
			<param-name>gif</param-name>
			<param-value>36000</param-value>
		</init-param>
		<init-param>
			<param-name>jpg</param-name>
			<param-value>36000</param-value>
		</init-param>
		<init-param>
			<param-name>css</param-name>
			<param-value>36000</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>cacheFilter</filter-name>
		<url-pattern>*.js</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>cacheFilter</filter-name>
		<url-pattern>*.gif</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>cacheFilter</filter-name>
		<url-pattern>*.jpg</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>cacheFilter</filter-name>
		<url-pattern>*.css</url-pattern>
	</filter-mapping>

PageCacheFilter 是我们的缓存控制过滤器,代码如下:
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

/**
 * @author liubj
 */

public class PageCacheFilter implements Filter {
	private FilterConfig config = null;
	private static HashMap expiresMap = new HashMap();

	public void init(FilterConfig filterConfig) {
		this.config = filterConfig;
		expiresMap.clear();
		Enumeration names = config.getInitParameterNames();
		while (names.hasMoreElements()) {
			try {
				String name = (String) names.nextElement();
				String value = config.getInitParameter(name);
				if(isNumeric(value)){
					Integer expire = Integer.valueOf(value);
					expiresMap.put(name, expire);
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse res = (HttpServletResponse) response;

		String uri = req.getRequestURI();
		String ext = null;
		int dot = uri.lastIndexOf(".");
		if (dot != -1) {
			ext = uri.substring(dot + 1);
		}

		setResponseHeader(res, uri, ext);
		chain.doFilter(request, response);
	}

	public void destroy() {
	}

	protected FilterConfig getFilterConfig() {
		return (config);
	}

	private void setResponseHeader(HttpServletResponse response, String uri,
			String ext) {
		if (ext != null && ext.length() > 0) {
			Integer expires = (Integer) expiresMap.get(ext);
			if (expires != null) {
				if (expires.intValue() > 0) {
					response.setHeader("Cache-Control", "max-age="
							+ expires.intValue()); // HTTP 1.1
				} 
			}
		}
	}

	private static boolean isNumeric(String str) {
		for (int i = str.length(); --i >= 0;) {
			if (!Character.isDigit(str.charAt(i))) {
				return false;
			}
		}
		return true;
	}


3.独立js,css 以及 js,css的位置排放,则需要我们有良好的习惯既可以.
4.对于大数据量,我们要及时做好服务器段数据的缓存工作,利用orm框架的缓存机制.

还有其他针对页面缓存的机制,比如 ehcache 的 webFilter等,大家可以探索一下!
分享到:
评论

相关推荐

    数据库性能优化 心得体会 笔记

    数据库性能优化的记录。常用的,关于数据库索引优化,和一些心得体会,希望有帮助。

    Oracle性能优化学习心得

    Oracle 性能 优 化学习心得Oracle性能优化学习心得

    MySQL性能优化心得1

    4.1、存储引擎的优化 3 4.2、数据库设计和查询优化 7 4.2.2 查询设计 10 4.3、服务器端优化 10 4.3.2 服务器设臵优化 10 4.4、

    oracle性能优化学习心得

    都是个人经验的总结,通过实践得出来的,大家可以参考

    Oracle DBA优化数据库性能心得体会

    实际上如今的优化己经向优化等待(waits)转型了,实际中性能优化最根本的出现点也都集中在IO,这是影响性能最主要的方面,由系统中的等待去发现Oracle库中的不足、操作系统某些资源利用的不合理是一个比较好的办法...

    DBA优化数据库性能心得

    DBA优化数据库性能心得,很多的时侯,做Oracle DBA的我们,当应用管理员向我们通告现在应用很慢、数据库很慢的时侯,我们到数据库时做几个示例的Select也发现同样的问题时,有些时侯我们会无从下手,因为我们认为...

    Android性能优化学习手册

    1、性能优化专家:具备深度性能优化与体系化APM建设的能力。 2、架构师:具有丰富的应用架构设计经验与心得,对Android Framework层与热门三方库的实现原理与架构设计了如指掌。 3、音视频/图像处理专家:毫无疑问,...

    网页设计实习心得 网页制作实习心得

    网页设计后台管理方面的知识应用,及利用所学知识管理和编辑网站,并从实际出发,简单了解关于网站安全性问题的实际解决措施(md5密码加密等网页设计知识)的实习心得

    oracle性能优化的资料(打包)

    oracle性能优化的资料(打包),包括如下: 1.sql性能的调整-总结.pdf 2.PLSQL高级编程资料.pdf 3.Oracle性能调优实践中的几点心得.doc 4.oracle性能优化.doc 5.oracle_sql性能优化.doc

    网页设计心得体会.doc

    开展了动态思维训练教学活动,对于我们学生来说,可以激发学习兴趣,调动学习的自觉性,自己动脑、动手,动口,运用网络资源,结合教材及老师的指导,通过自身的实践,创作出积聚个人风格、个性的个人网页。...

    Oracle Sql Pl/Sql 性能优化 精华

    富士康MIS 资深人员总结的Oracle PL/Sql 性能优化心得 给新进员工学习之文档 &lt;br&gt;绝对精华 写出专业的Sql

    mysql数据库优化的学习心得

    MySQL数据库优化心得:选取最适用的字段属性;使用连接(JOIN)来代替子查询(Sub-Queries);使用联合(UNION)来代替手动创建的临时表;事务;锁定表;外键等。

    Oracle性能优化求生指南-经典的很

    目前得到的一本算是能拿得出收的优化资源 大家共享下

    sql优化心得

    最近的一个项目,需要对几个超过千万的表进行计算,JION,复杂查询等操作,觉得SQL语句的优化非常重要,把一些心得写得出,希望同行们能纠正我的错误。

    Oracle DBA手记 数据库诊断案例与性能优化实践

    Oracle DBA手记—数据库诊断案例与性能优化实践(一线Oracle DBA工作思考的心得,盖国强亲自策划)

    sql语句优化心得

    在开发阶段我们写的一些sql可能无法体现出性能问题,因为数据量只有...但是在性能测试阶段,随着测试数据的递增,达到几十万,几百万条的时候,性能差别就体现的特别明显,下面我列出一些常用的sql性能优化技巧。

    SQL语句性能优化

    《SQL语句性能优化》有些程序员在撰写数据库应用程序时,常专注于 OOP 及各种 framework 的使用,却忽略了基本的 SQL 语句及其「性能 (performance) 优化」问题。曾听过台湾某半导体大厂的新进程序员,所组出来的一...

    Android APP性能优化总结

    内容概要:总结了Android开发过程中的一些性能优化方法论和实践心得

    让Oracle跑得更快Oracle 10g性能分析与优化思路 谭怀远 扫描版

    国内第一本真正意义上从工作经验出发,以作者的心得体会全面论述Oracle数据库性能优化的书籍。 作者内心经历的表白,站在全局角度对性能做分析,而不是拘泥于具体的技术细节,呈现给读者一种新的阅读思路。 书中...

    网页设计实习心得体会.pdf

    网页设计实习心得体会.pdf网页设计实习心得体会.pdf网页设计实习心得体会.pdf网页设计实习心得体会.pdf网页设计实习心得体会.pdf

Global site tag (gtag.js) - Google Analytics