让你的 Web 应用程序飞起来

   本文向您介绍如何通过在您的 CSS 和 JavaScript 文件中 — 两种易于优化的常见资源,使用社区中提供的工具即可完成优化 — 优化空间使用来实现更高的性能。然而,在继续之前,有一点是很重要的,压缩 CSS 和 JavaScript 文件只是为了让您的 web 应用程序 “轻巧” 的诸多操作其中的两个技术。关于优化其他资源(比如,HTML 和图像)的 技术,参阅 参考资料 获取更多信息。

  为了从本文中获得最大收益,您需要安装下列工具:

  一个文本编辑器

  Java Runtime Environment 1.4 或者更新版本

  问题:空白内容

  当开发人员使用 CSS 或 JavaScript 文件工作时,空白内容通常是一件好事。空白内容包括缩进文件所使用的字符,增强可读性的间距、以及为了在文章的不同部分添加一个可视间隔而插入的额外空行。空白内容使文件易于阅读和维护。考虑 清单 2 中的 CSS 文件,其中有适当数量的空白内容(和注释),有助于开发人员理解 CSS 代码的意图。

  从这一点上来说,将文件变得更小作为问题的一个长期解决方案是不可行的,因为文件很有可能在将来会被修改。如果将空白内容和注册全部删除,CSS 和 JavaScript 代码就很难阅读。

  问题是逐渐增加的空白导致文件不断增大。每个空白行、缩进和括号之间的空格至少占用一个额外字符,这对于 CSS 或 JavaScript 代码的正确解析来说实际上并不需要。首先,一两个空白没有什么大不了的,但是小数量乘以一个很大倍数时就变成很大的数量了。

  考虑这样一个文件,其中额外空白总计 5KB。如果您的网站每天的点击率是 1000,每天节省 5KB 每个月就可以节约大约 146 MB((5K * 1000 * 30) / 1024 作为粗略估计)。就这而言,该文件的点击量还是相对保守的估计,实际空白成本可能还会增加。

  此外,下载您文件的用户必须等待文件的下载。尽管许多用户在他们第一次访问您的网站后可能就有缓存的 CSS 或 JavaScrip 文件,性能仍然会对他们的第一次访问造成负面影响。如果您可以减少您 CSS 和 JavaScript 文件,即使每次 1 KB,您都可以减少数千字节的浏览器必须加载的数据。

  解决方案:压缩

  要解决问题并从小资源获益,一个显而易见的解决方案是从您的 CSS 和 JavaScript 文件删除额外元素,比如注释和空白。但是,由于在开发过程中从您的文件删除注释和空白不 可行,一个较好的解决方案是 “分级” 您的网站资源、优化它们、然后将其发布。

  编写一个删除空白字符的定制脚本最初听起来是一个可行的解决方案,但是在 CSS 和 JavaScript 文件中本身都有很重要的空白。因此任何删除空白和压缩文件的工具必须是足够智能,可以区别哪些语言中哪些空白是重要的。

  幸运的是,在社区中已经可以找到这种工具了,它们已经经过资源(比如 CSS 和 JavaScrip 文件)压缩测试了。其中一个工具就是 YUI Compressor,一个来自 Yahoo! Developer Network 的可用工具(链接见 参考资料)。

  YUI Compressor

  YUI 压缩器是一个使用 Java 编写的程序,拥有 Berkeley Software Distribution 许可证。YUI Compressor 可以缩小(压缩)您的 CSS 和 JavaScript 代码,这样您无需自己编写工具就可以享受小资源带来的益处了。

  下载 YUI Compressor,然后提取文件,放置到一个容易访问的位置。归档文件包括完整源代码和一个用于构建 YUI Compressor 的 Apache Ant 脚本(build.xml)。然而,如果您不想构建该文件,您可以在 build 目录中找到 yuicompressor-{version}.jar(见 图 1)。

  图 1. 归档文件目录

  


  YUI Compressor 的 JAR 文件是自带的,您可以将该文件复制到别的项目,通过输入以下命令来执行:


  1. java -jar yuicompressor-2.4.2.jar --help 

  除了下载该文件,还有一种方法,使用 清单 1 中的 XML 文件来将 YUI Compressor 添加到您的 Apache Maven pom.xml 或 Apache IVY 文件。

  清单 1. 添加 YUI Compressor 到 Maven 或 IVY


  1. <dependency> 
  2.     <groupId>com.yahoo.platform.yui</groupId> 
  3.     <artifactId>yuicompressor</artifactId> 
  4.     <version>2.3.6</version> 
  5. </dependency> 

  将 -h 传递参数到 yuicompressor.jar 文件,显示 YUI Compressor 的基本用法信息。

  压缩 CSS

  清单 2 是一个为便于开发人员维护而优化的 CSS 示例,它包含注释,且被用空白格式化了。

  清单 2. 为维护而优化的 CSS 文件


  1. /* The main body for the page. */ 
  2. body  
  3. {  
  4.     font-family : Tahoma,Geneva,sans-serif; 
  5.     background-color : #e2e2e2; 
  6.     margin : 0 0 0 0; 
  7.     padding : 0 0 0 0; 
  8.  
  9. /* The header and header elements */ 
  10. #header, #content, #footer  
  11.     padding 0; 
  12.     margin 0; 
  13.     width : 100%; 
  14.     min-width : 600px; 
  15.  
  16. #header a  
  17.     text-decoration : none; 
  18.     border : none; 
  19.  
  20. #header  
  21.     background : #fff url("images/lb-h.jpg") repeat-x top; 
  22.     height : 115px; 
  23.  
  24. #header img.logo  
  25.     position : absolute; 
  26.     border : none; 
  27.     margin-top : 10px; 
  28.     margin-left : 50px; 
  29.     z-index : 1000; 
  30.  
  31. /* Top banner... */ 
  32. #banner  
  33.     margin : 0; 
  34.     padding : 0; 
  35.     background-color : #fff; 
  36.     border-bottom : 1px solid #bebebe; 
  37.     height : 265px; 
  38.     text-align : center; 
  39.  
  40. /* This is the main content */ 
  41. #content  
  42.     background : #fff url("images/lb-g.jpg") repeat-x top; 
  43.     min-height : 450px; 
  44.     display : inline-block; 
  45.     clear : both; 
  46.  
  47. #footer  
  48.     border-top : 3px solid #bebebe; 
  49.     clear : both; 
  50.     min-height : 100px; 
  51.     font-size : smaller; 
  52.  
  53. #followicons  
  54.     margin-left : 50px; 

  要压缩一个 CSS 文件,运行以下命令:


  1. java -jar yuicompressor-2.4.2.jar -o sample.min.css sample.css 

  文件被压缩之后,输出看起来如 清单 3 所示。清单是为了便于阅读进行了格式化的,但是 YUI Compressor 输出没有换行:您看到的都是在一行。

  清单 3. 压缩后的 CSS 文件


  1. body{font-family:Tahoma,Geneva,sans-serif;background-color:#e2e2e2;margin:0;padding:0;} 
  2. #header,#content,#footer{padding 0;margin 0;width:100%;min-width:600px;}#header a{ 
  3. text-decoration:none;border:none;}#header{background:#fff url("images/lb-h.jpg") repeat-x  
  4. top;height:115px;}#header img.logo{position:absolute;border:none;margin-top:10px; 
  5. margin-left:50px;z-index:1000;}#banner{margin:0;padding:0;background-color:#fff; 
  6. border-bottom:1px solid #bebebe;height:265px;text-align:center;}#content{background:#fff  
  7. url("images/lb-g.jpg") repeat-x top;min-height:450px;display:inline-block;clear:both;} 
  8. #footer{border-top:3px solid #bebebe;clear:both;min-height:100px;font-size:smaller;} 
  9. #followicons{margin-left:50px;} 

  除了简单地删除空白和注释之外,YUI Compressor 还对您的 CSS 执行大量其他优化来使文件更小。那么,为了使文件更小究竟对 CSS 代码做了什么呢?

  删除空白。任何不必要的空白,像缩进、空行,以及元素和括号之间的空格都被删除了。如果,CSS 的空白对于正常运行是必需的,那么会被保留下来(见 清单 4)。

  清单 4. 删除多余的空白


  1.                         /* Before */ 
  2. #header a  
  3.     text-decoration : none; 
  4.     border : none; 
  5.  
  6. /* After */ 
  7. #header a{text-decoration:none;border:none;} 

  删除注释。如果在您的 CSS 文件中必须包含注释,比如,公司的版权通告,您可以在注释中输入一个感叹号(!),通知 YUI Compressor 保留它(见 清单 5)。

  清单 5. 除必要注释外,全部删除


  1.                         /* Before */ 
  2. /* This is the main content */ 
  3. #content  
  4.     background : #fff url("images/lb-g.jpg") repeat-x top; 
  5.     min-height : 450px; 
  6.     display : inline-block; 
  7.     clear : both; 
  8.  
  9. /* After */ 
  10. #content{background:#fff url("images/lb-g.jpg") repeat-x top;min-height:450px; 
  11. display:inline-block;clear:both;} 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索css
, 文件
, 清单
, 空白
, 一个
, CSS代码压缩
, yuicompressor
Compressor
web应用程序开发技术、web应用程序、web应用程序开发、web应用程序设计、asp.net web应用程序,以便于您获取更多的相关知识。

时间: 2024-08-04 07:16:13

让你的 Web 应用程序飞起来的相关文章

Delphi开发Web Server程序返回图像的方法

Internet/Intranet在九十年代可能是最流行的计算机术语了,不管是计算机行业内的人士还是计算机外的人士,都会使用Internet/Intranet,有的查资料,有的是宣传自己和公司,甚至有许多以前从没有想到用Internet的东西现在也在用Internet来解决, 比如有的程控数字计算机维护用Internet来解决.在这一切应用之中,基于Web Server的应用程序的开发是基本点,但如何开发Web Server的程序呢? Delphi 3是Borland公司1997年推出的可视化.

使用AJAX技术开发新一代Web应用程序(2)

ajax|web|程序 开发新一代Web应用程序(2)-ajax与php web开发">图2 一个独立桌面应用程序的图解架构. 该应用程序运行于其自身的进程之中-在其内数据模型和程序逻辑彼此清晰可见.在同一台计算机上运行的该应用程序的第二个实例除了经由文件系统之外无法存取第一个实例的数据模型.典型地,全部程序状态存储在单个的文件中-当该应用程序运行时它被锁定以阻止任何信息的同步交换. 图3 客户端/服务器系统和n层架构图解. 该服务器提供一个客户可以用之进行交互的可共享的数据模型.客户端仍

如何使用Ajax技术开发Web应用程序(3)

ajax|web|程序 在这个关于AJAX系列的第三部分中(相关文章:第一部分.第二部分),我们将学习如何使用AJAX与服务端进行写作以及这些技术如何产生强大的web应用程序.如果你对学习如何构建类似GMail或者Google Maps的web程序感兴趣的话,这是一篇基础的入门(虽然那两个东东会比我们在这篇文章中提及的内容复杂的多).在这篇文章中,我使用PHP作为服务端语言,但AJAX能够和任何服务端语言进行很好的兼容,所以你尽可以选择你所钟爱的任何语言! 我们还是从我们上一篇文章的代码(喏,就

如何使用Ajax技术开发Web应用程序(2)

ajax|web|程序 在上一篇文章中,我们讨论了如何通过javascript从一个远程XML文件中取得数据.在这篇文章中,我们将学会怎样对数据作更复杂的处理.作为一个示例,我们会准备一组XML数据,将数据分割成独立的片断并以不同的方式展示这些片断(取决于它们是如何被标识的). 这篇文章是建立在上一篇文章中构造的示例代码的基础之上,所以如果你不能理解我们现在的代码,你可以回过头去读第一篇文章(sheneyan注:就在上面). 开始- 让我们开始我们的第一步:构造XML.我们准备写一个XML文档,

如何使用Ajax技术开发Web应用程序

ajax|web|程序 在上一篇文章中,我们讨论了如何通过javascript从一个远程XML文件中取得数据.在这篇文章中,我们将学会怎样对数据作更复杂的处理.作为一个示例,我们会准备一组XML数据,将数据分割成独立的片断并以不同的方式展示这些片断(取决于它们是如何被标识的). 这篇文章是建立在上一篇文章中构造的示例代码的基础之上,所以如果你不能理解我们现在的代码,你可以回过头去读第一篇文章(sheneyan注:就在上面). 开始- 让我们开始我们的第一步:构造XML.我们准备写一个XML文档,

如何使用AJAX技术构建优秀的Web应用程序

一. 简介 异步JavaScript+XML(即Ajax),是一种创建交互式web应用程序的Web开发技术.这种程序使用JavaScript和XML从客户端提交服务器请求,且整个过程中仅需要交换少量的数据而不必提交整个web页面.因此,这样的程序将更快和更具响应性,并将成为新一代客户机-服务器系统的重要基础技术之一.你可以在站点http://www.google.com/webhp?complete=1&hl=en处看到一种良好的AJAX实践技术展示.在此页面中,如果你把任何字母输入到文本框内,

Oracle宣称MySQL 5.5将加强支持Web应用程序

Oracle宣称MySQL 5.5将加强支持Web应用程序

用AJAX开发智能Web应用程序之基础篇

一. 什么是AJAX? 这个名字代表了异步javascript+XMLHTTPRequest,并且意味着你可以在基于浏览器的javascript和服务器之间建立套接字通讯.其实AJAX并不是一种新技术,而是已经成功地用于现代浏览器中的若干成功技术的可能性组合.所有的AJAX应用程序实现了一种"丰富的"UI--这是通过javascript操作HTML文档对象模型并且经由XMLHttpRequest实现的精确定位的数据检索来实现的.典型的示例AJAX应用程序是Google Labs(htt

怎样使用AJAX进行WEB应用程序开发

ajax|web|程序 <DIV class=left><SPAN class=span>作者:龙犊整理</SPAN><SPAN class=span>出处:天极网</SPAN><SPAN class=span>责任编辑:<A title=向本编辑提问 href="http://comments.yesky.com/t/%C1%FA%B6%BF/6,324/2337468.shtml"> 龙犊 <