出处:AJAX资料站
号称要超越Slashdot 的 digg.com 是一个典型的Ajax应用。它的首页使用了prototype框架和scriptaculous扩展。有好事者统计了加载digg.com的首页时总共下载JavaScript和CSS文件的字节数,发现不算上图片,光Html+JS+CSS就有250多k,于是提出了Digg: Javascript overload?的疑问。 Zimbra 针对这个问题,给出了一些优化的方法:AJAX and CSS Optimization,要点如下:
将多个js或者CSS文件整合成一个文件以减少HTTP连接数,使用类似jsmin的工具移除注释、空白以及多余的空行等以减少网络传输的数据量,在web服务端应用gzip compression 压缩 Zimbra 使用以上方式优化后,测试发现减少了50%以上的带宽。
在我们现在和将来的Ajax开发中一定也会遭遇类似digg.com的性能问题。Zimbra的解决方案可供参考。关于HTTP Compression,我觉得是优化Ajax最为关键的部分。我们可以应用web server默认提供的机制,比如Tomcat5.x在Connector 配置中提供的压缩选项,一个典型的Connector配置如下:
<Connector
port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true"
compression="on"
compressableMimeType="text/html,text/xml,text/plain,text/javascript,text/css"
/>
以上配置使用compression属性激活压缩,然后用compressableMimeType属性设置应用压缩的Mime Type类型。最著名的Apache服务器也提供了mod_deflate 等模块提供类似的压缩配置。
另外还可以通过调用web server提供的API编程来提供压缩功能,比如使用Java为Servlet容器提供一个GzipFilter的应用也很普遍。