`
wei5201
  • 浏览: 187552 次
  • 性别: 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等,大家可以探索一下!
分享到:
评论

相关推荐

    VMware 11安装Mac OS X 10.10虚拟机以及优化心得.docx

    这是一款专门针对VMware Workstation中Mac OS X 10.10系统进行性能优化的应用程序。通过将其设置为开机自启动,用户能够享受到更为流畅的虚拟机体验。 通过上述的优化措施,笔者的虚拟机运行基本操作如编写代码和...

    UNITY WEBGL的优化心得

    然而,WebGL 平台的性能优化至关重要,因为其受到浏览器和硬件限制。以下是一些关于 Unity WebGL 优化的关键点: 1. **纹理优化**: - **纹理大小**:纹理应控制在256-512像素之间,以减少内存占用。 - **纹理...

    web网页制作实训心得

    8. **测试与调试**:制作完成后,进行全面的浏览器兼容性测试和性能测试,确保网页在不同环境下的良好表现。 通过这次实训,我对Web开发有了更深入的理解,认识到理论知识与实践操作的结合是提升技能的关键。在今后...

    web笔记心得

    12. 性能优化:包括减少HTTP请求、压缩资源、利用缓存、优化图片大小等,以提升网页加载速度和用户体验。 13. 调试工具:开发者工具是每个前端工程师的必备武器,如Chrome DevTools,用于调试JavaScript、分析网络...

    web前端实训心得体会.doc

    * 性能优化:网页需要快速加载和响应用户交互。 在 Web 开发中,挑战是非常正常的。开发者需要具备解决这些挑战的能力和经验。 6. 前端开发中的趋势 * 响应式设计:网页需要适应不同的设备和屏幕尺寸。 * 单页...

    html实习心得.doc

    例如,编写有效的代码和使用合适的编程语言技术,对于提升网页的性能和兼容性至关重要。在实习期间,我认识到了学习编程语言技术的重要性,并尝试将所学知识应用到实际工作中,以达到更好的设计效果。 实习期间,我...

    css学习心得内容包括了所有css样式调整

    最后,了解CSS性能优化技巧也很重要。这包括减少选择器的复杂性、避免使用通配符选择器(*)、合理使用内联样式和外部样式表,以及使用媒体查询来延迟加载非关键资源。有效的CSS组织和优化可以显著提升网页的加载...

    webView 使用指南及使用心得总结

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序内部加载和显示网页内容,极大地扩展了应用的功能。...在实际开发中,应根据项目需求灵活运用上述知识点,同时注意安全性和性能优化。

    用dreamweaver制作网页的实践报告.docx

    测试网页性能,确保加载速度。 实践心得: 1. 页面设计方面:设计时需考虑不同用户的需求,使网页既美观又实用。 2. 网页视觉效果:视觉效果是吸引用户的第一步,但要适度,避免过度装饰。 3. 布局和导航:良好的...

    DIV+CSS 网页布局心得

    **DIV+CSS网页布局心得** 在网页设计领域,DIV+CSS布局已经成为主流,因为它提供了更加灵活、可维护性更强的页面构建方式。相比于传统的TABLE布局,DIV+CSS更符合Web标准,有助于提升网页的性能和可访问性。下面将...

    国际物流公司网页模板是一款HTML5模板,适合社会教育类网站模板下载。_html网站模板_网页源码移动端前端_H5模板.rar

    移动端前端指的是专为移动设备优化的网页界面,包括适配各种屏幕尺寸、触摸操作的优化以及性能优化,确保在手机或平板上也能流畅使用。 【H5模板】 这里的“H5模板”是指基于HTML5技术设计的网页模板,它包含了...

    web开发人员工作心得

    ### Web开发人员工作心得:成长与挑战 #### 核心知识点提炼 1. **学习与适应:**在Web开发领域,技术更新迅速,持续学习至关重要。对于初入行业的开发者而言,掌握新技能、理解现有技术框架是成长的关键。 2. **...

    学习心得(C#,SQL,javascript,etc...

    在工作中,你可能会遇到优化查询性能的问题,此时,索引的创建和使用、存储过程的编写、事务管理以及SQL性能调优技巧将是必不可少的知识。 JavaScript,作为Web开发的三大核心技术之一,负责网页的动态交互。它既能...

    JSP应用技巧及心得---数据库的链接

    通过熟练掌握这些基本的JSP技巧,开发者可以更有效地构建动态网页,优化代码结构,同时确保与服务器之间的通信流畅。在实际项目中,根据需求合理利用预定义变量和JSP指令,可以显著提高代码的可读性和效率。

    网页设计作品

    此外,考虑到这是个摄影作品集,可能会采用大图背景、滚动特效或者幻灯片展示来突出摄影作品,同时,图片的加载速度也是设计时需要考虑的重要因素,设计师可能会利用懒加载技术优化性能。 网页中的摄影作品可能会被...

    css优化技巧自己实践心得

    在网页设计和开发中,CSS优化是提升页面性能的关键因素之一。随着用户对网页加载速度要求的提高,优化CSS文件的加载与渲染时间变得尤为重要。以下是一些经过实践检验的CSS优化技巧,这些方法可以有效减小文件体积,...

    SEO 网站优化

    在这个“SEO 网站优化”的压缩包文件中,我们可能找到作者初学SEO的心得体会和精华内容。SEO的重要性在于,一个高排名的网站能吸引更多的有机(非付费)流量,从而提高品牌曝光度、潜在客户数量和最终的转化率。 1....

Global site tag (gtag.js) - Google Analytics