`
Liu_wh
  • 浏览: 18619 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

优化JS的小总结

阅读更多
    优化JS主要为了网页更好更快的访问并展显给客户端;个人也谈谈关于JS优化的小总结;虽然本人算不上什么JS高手但是也有自己的一些看法和见解在这里和大家说说;如果有不太对地方或有更好的方法请指示;个人认为主要三点:

     1、JS代码本身的简化
     2、使用工具减缩JS本身的大小包括空格换行
     3、使用压缩传输

     第一点JS本身的简化;JS代码有很多值得注意的使用技巧比如:
     A、全局变量: 应减少使用 宁可用100个局部变量都不使用一个全局变量
     B、循环: 如果是循环变量递增或递减,不要单独对循环变量赋值,应该在它最后一次读取的时候使用嵌套的++或—操作符;如果要与数组的长度作比较,应该事先把数组的length属性放入一个局部变量中,减少查询次数;如果有异常捕获尽量把异常捕获写在外面;如果在循环中要拼接字符串最好用StringBuilder.append("你的字符串");这种方式不用String直接操作。
    C、其它:比如少使用Eval;还有类型转换技巧;还有减少不必要的对象创建也就是少用new一个对象等等```(其它就不细说了)

    第二点使用工具对JS文件本身压缩,现在流行的js压缩工具有很多,如packer,jsMin,Esc,JSA,yui-compressor等等都可以对JS文件瘦身(主要是去空格和换行己达到减少文件大小的目的),压缩比例是相当可观的。
    
    第三点压缩传输现在一般的浏览器都支持压缩传输 现在用得比较多的莫过于gzip压缩
它的使用:
    A、容器(服务器)提供的功能,但这个局限于特定容器。如apache+tomcat或者resin-pro版。
    1、TOMCAT的配置在server.xml启用支持gzip压缩.添加下列属性
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"

   2、jobss的配置在server.xml下修改端口的那段:
<Connector port="80" address="0.0.0.0"      
        maxThreads="250" maxHttpHeaderSize="8192" 
        emptySessionPath="true" protocol="HTTP/1.1" 
        enableLookups="false" redirectPort="8443" acceptCount="100" 
        connectionTimeout="20000" disableUploadTimeout="true"   
        compression="on"      
        noCompressionUserAgents="gozilla, traviata"
    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json"  />

    B、是部署前手动gzip压缩,配合servlet过滤器使用,这个能实现gzip功能,但是降低了灵活性。 这种又可分两种方式实现:
    第一种是手动压缩JS,编写自己的过滤器(Filter),配置自己过滤器
    1、将js文件手动压缩。如项目中的ext-all.js 使用gzip压缩,压缩之后将
  文件后缀改为.gzjs.(压缩比例大致为70%)。运行gzip工具 输入指令 gzip -c ext-all.js > ext-all.gzjs 即可生成新的文件
   2、编写Filter
  
1.	public class GzipJsFilter implements Filter   
2.	{   
3.	Map headers = new HashMap();   
4.	  
5.	public void destroy() { }   
6.	  
7.	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)throws IOException, ServletException {   
8.	    if (req instanceof HttpServletRequest)   
9.	      doFilter((HttpServletRequest)req, (HttpServletResponse)res, chain);   
10.	    else  
11.	      chain.doFilter(req, res);   
12.	}   
13.	  
14.	public void doFilter(HttpServletRequest request, HttpServletResponse response,FilterChain chain)   
15.	    throws IOException, ServletException   
16.	{   
17.	    request.setCharacterEncoding("UTF-8");   
18.	    for (Iterator it = this.headers.entrySet().iterator(); it.hasNext(); ) {   
19.	      Map.Entry entry = (Map.Entry)it.next();   
20.	      response.addHeader((String)entry.getKey(), (String)entry.getValue());   
21.	    }   
22.	    chain.doFilter(request, response);   
23.	}   
24.	  
25.	public void init(FilterConfig config) throws ServletException {   
26.	    String headersStr = config.getInitParameter("headers");   
27.	    String[] headers = headersStr.split(",");   
28.	    for (int i = 0; i < headers.length; ++i) {   
29.	      String[] temp = headers[i].split("=");   
30.	      this.headers.put(temp[0].trim(), temp[1].trim());   
31.	    }   
32.	}   
33.	}  

    3、配置web.xml代码 
   
1.	<filter>    
2.	      <filter-name>GzipJsFilter</filter-name>    
3.	      <filter-class>com.monica.bussiness.GzipJsFilter</filter-class>    
4.	      <init-param>    
5.	          <param-name>headers</param-name>    
6.	          <param-value>Content-Encoding=gzip</param-value>    
7.	      </init-param>  
8.	</filter>  
9.	<filter-mapping>  
10.	   <filter-name>GzipJsFilter</filter-name>  
11.	   <url-pattern>*.gzjs</url-pattern>  
12.	</filter-mapping>  



    第二种使用工具包
    1、下载tk-filter工具包。下载地址 http://sourceforge.net/projects/filterlib
   2、将解压后得到的jar包引入工程。将tk-filters.properties加入工程WEB-INF/class目录下,修改tk-filters.properties GZIPFilter.Enabled=true
   3、配置web.xml
   
1.	<filter>  
2.	    <filter-name>GZIPFilter</filter-name>  
3.	    <filter-class>com.tacitknowledge.filters.gzipfilter.GZIPFilter</filter-class>  
4.	</filter>  
5.	  
6.	  <filter-mapping>  
7.	    <filter-name>GZIPFilter</filter-name>  
8.	    <url-pattern>*.js</url-pattern>  
9.	  </filter-mapping>  
10.	  
11.	  <filter-mapping>  
12.	    <filter-name>GZIPFilter</filter-name>  
13.	    <url-pattern>*.css</url-pattern>  
14.	  </filter-mapping>   


压缩前后效果如图
  • 大小: 37.2 KB
  • 大小: 29.2 KB
分享到:
评论

相关推荐

    JavaScript 性能优化的小知识总结.pdf

    JavaScript 性能优化的小知识总结

    JavaScript性能优化的小知识总结共23页.pdf

    以下是一些关于JavaScript性能优化的关键知识点: 1. **延迟加载(Lazy Loading)**:为了提高页面加载速度,可以使用延迟加载策略,如图片懒加载,只在用户滚动到可视区域时才加载资源。 2. **代码分割(Code ...

    JavaScript性能优化的小知识总结共23页.pdf.zip

    这份名为"JavaScript性能优化的小知识总结共23页.pdf"的文档很可能包含了多个方面的重要信息,旨在帮助开发者掌握提高JavaScript代码效率的方法。以下是一些可能涵盖在文档中的关键知识点: 1. **代码结构优化**:...

    使用webpack打包原生小程序并优化对小程序的一些功能点进行优化

    总结,Webpack打包微信小程序能带来更好的代码管理、优化和维护性。通过合理的配置和使用各种插件,可以有效提高小程序的性能和用户体验。然而,需要注意的是,过度的优化也可能带来反效果,应根据实际项目需求来...

    js内存管理及优化总结和文档

    由于JavaScript是动态类型语言,其内存管理与编译型语言有所不同,因此理解JS的内存管理和优化对于提升应用程序性能至关重要。 **一、JS内存管理** JS的内存管理主要依赖于垃圾收集机制(Garbage Collection, GC)...

    javascript项目优化总结.pdf

    JavaScript 项目优化是提高网页应用性能的关键步骤,其目的是减少资源消耗,提升用户体验。以下是针对JavaScript优化的一些核心点,结合给定的文件内容进行详细解释: 1. **模块化与类编程**: - **模块化**:...

    javascript项目优化总结.docx

    JavaScript 项目优化是提高网页或应用性能的关键环节。在文档中提到的优化策略主要包括代码组织、文件压缩、模块化和类编程的实现。以下是对这些知识点的详细解释: 1. **代码重用与模块化**: 在优化前,代码可能...

    web前端笔试题面试题汇总+前端优化总结

    web前端笔试题面试题汇总+前端优化总结 web前端笔试题面试题汇总+前端优化总结 web前端笔试题面试题汇总+前端优化总结 web前端笔试题面试题汇总+前端优化总结 web前端笔试题面试题汇总+前端优化总结 web前端笔试题...

    wepack性能优化方案学习总结

    - **入口起点分离**:通过配置多个入口文件(例如`index.js`和`main.js`),每个入口文件拥有独立的逻辑,这样可以确保只有必要的代码被加载。 - **防止重复**:利用Webpack内置的SplitChunksPlugin插件来去除重复...

    前台javascript速度优化

    在前端开发中,JavaScript是构建...总结,优化前台JavaScript性能是一项系统工程,需要从代码编写、工具应用和Ajax通信等多方面入手。通过理解并实践这些优化技巧,可以显著提升前端应用的运行效率,从而提高用户体验。

    JavaScript开发-自动优化Nuxtjs项目中使用的图像JPEGPNGSVGWebP和GIF

    总结来说,通过选择合适的Nuxt.js插件和配置,结合动态导入和条件加载策略,我们可以有效地优化Nuxt.js项目中的JPEG、PNG、SVG、WebP和GIF图像。这不仅能提高网站性能,也有利于提升用户的浏览体验。在实际开发中,...

    利用ClosureCompiler通过Rollup缩小和优化JavaScript

    总结来说,利用Closure Compiler通过Rollup缩小和优化JavaScript是一种高效的实践方法。Rollup提供了模块化打包的能力,而Closure Compiler则通过对代码进行深度优化,进一步减少文件大小和提升运行效率。这种组合...

    优化js alert的样式 支持自定义扩展 带应用实例 (jquery)

    总结,优化JS的alert样式并支持自定义扩展,是提升用户体验的关键步骤之一。通过使用jQuery SimpleModal插件,我们可以轻松实现这一目标,打造出更具吸引力和功能性的弹窗对话框。在实际项目中,务必结合具体需求,...

    web前端优化知识总结+笔试+面试总结.pdf

    Web 前端优化知识总结 本文总结了 Web 前端优化的知识点,涵盖了页面级别和代码级别的优化方法。优化的目的是提高用户体验和节省资源利用。页面级别的优化方法包括减少 HTTP 请求数、合理设置 HTTP 缓存、资源合并...

    js的全套学习总结,xmind版本

    这份“js的全套学习总结,xmind版本”提供了一个全面的学习路线图,旨在帮助开发者系统地理解和掌握JavaScript的核心概念及高级特性。 首先,JavaScript的基础知识包括变量、数据类型(如字符串、数字、布尔值、...

    JS方法总结

    JavaScript,简称JS,是Web开发中的核心技术之一,用于实现客户端的动态交互效果。这篇总结将深入探讨JavaScript的各种方法,同时也会分享一些软件测试中的实用经验。 一、JavaScript基础方法 1. 变量声明:在...

    JavaScript必看全面总结.zip

    14. **Node.js基础**:了解JavaScript在服务器端的应用,Node.js的事件驱动模型,以及文件系统、网络请求等模块。 15. **框架与库**:如React、Vue、Angular等,它们如何简化前端开发,以及如何结合JavaScript进行...

    较试实用--web前端优化知识总结+笔试+面试总结1

    总结来说,前端优化是一个多维度的工作,包括资源管理、网络传输效率、代码质量等多个方面。恰当的优化不仅可以提高页面加载速度,提升用户体验,还能有效降低服务器资源消耗。对于开发者而言,理解并掌握这些优化...

    js代码优化的小示例

    ### JavaScript 代码优化示例分析 #### 背景与目的 在JavaScript开发过程中,代码优化是提升程序性能的关键步骤之一。通过优化可以减少代码执行时间、提高代码可读性和可维护性。本文将通过一个关于获取当前日期...

Global site tag (gtag.js) - Google Analytics