GWT如何与高性能Web应用程序的黄金规则相结合?

2 java performance gwt http web

所谓的"14个高性能网站黄金规则"是:

Rule 1 - Make Fewer HTTP Requests
Rule 2 - Use a Content Delivery Network
Rule 3 - Add an Expires Header
Rule 4 - Gzip Components
Rule 5 - Put Stylesheets at the Top
Rule 6 - Put Scripts at the Bottom
Rule 7 - Avoid CSS Expressions
Rule 8 - Make JavaScript and CSS External
Rule 9 - Reduce DNS Lookups
Rule 10 - Minify JavaScript
Rule 11 - Avoid Redirects
Rule 12 - Remove Duplicate Scripts
Rule 13 - Configure ETags
Rule 14 - Make AJAX Cacheable
Run Code Online (Sandbox Code Playgroud)

我想知道GWT为其开发人员自动神奇地解决了哪些问题.例如,作为单页面应用程序,我确信规则#1(更少的HTTP请求)被涵盖在内.但是规则9(减少DNS)呢?规则13?

其中,我认为唯一适用于任何Web框架的是#2(CDN),所以让我们假装它不在列表中.所以我问:其余的规则,哪些是GWT解决的,哪些不是?

Tho*_*yer 8

  1. ClientBundle将内联资源(CSS,图像作为data:URL); 从历史上看,ImageResources被组成IE6/7的"CSS sprites"(IE6/7的支持将在下一版本的GWT中被删除,但是在交换机后面仍然可以进行spriting).RequestFactory进行批处理(这也可以通过GWT-RPC实现,使用命令模式和自定义包装器)
  2. 使用xsiframe(或xs)链接器,您的脚本不需要与HTML主机页面(xs代表跨站点)在同一个源托管,以便它们可以由CDN提供服务
  3. GWT生成具有唯一名称的文件,以便将来可能过期 ; 见http://www.gwtproject.org/doc/latest/DevGuideCompilingAndDebugging.html#perfect_caching
  4. 您可以自己GZip GWT编译器的输出(或让您的HTTP服务器即时执行; AppEngine将自动执行此操作),或添加<inherits name="com.google.gwt.precompress.Precompress"/>到您的gwt.xml文件以使GWT编译器自动生成gzip'd文件(它们与原始未压缩文件一起生成,但您可以通过添加<set-configuration-property name="precompress.leave.originals" value="false" />到gwt.xml文件来关闭未压缩文件的生成;压缩文件将具有.gz扩展名;默认情况下,仅压缩文件.html,.css并且.js文件将被压缩)
    当有意义时(大小超过(不可配置的)阈值),GWT-RPC响应也会自动gzip.
  5. 由于负责HTML主页,因此GWT在这方面不会有任何帮助.大多数应用程序CssResource虽然使用s作为CSS,但该规则也不适用(规则是关于下载顺序/优先级)
  6. 与#5相同
  7. GWT使用CSS表达式的单个实例:维护玻璃面板的ZIndex相对于a的ZIndex PopupPanel,但它仅适用于IE6/IE7,因此它将在下一版本的GWT中删除; 而且我认为无论如何它对表演都没有真正的影响.
  8. GWT生成JS和CSS(通常在JS中内联)所以是的,它们确实是外部的.
  9. GWT不容易使用几个唯一的主机名.
  10. GWT确实缩小了JS(和CSS,并优化了图像),它还使用几种算法优化它们(死代码修剪,函数内联,组织的缩小JS,以便更好地gzips,函数合并)
  11. GWT不使用重定向(服务器端没有做太多事情); 这个规则不是关于工具,而是关于你的代码.
  12. 另一条规则是在身边,而不是在工具上.
  13. 与上面相同(另见#3和#14)
  14. 与上述相同; 虽然GWT-RPC和RequestFactory是"RPC"协议,但无法利用HTTP缓存.此规则适用于"REST"请求(当然,通过GWT可以实现RequestBuilder,XMLHttpRequest或者JsonpRequestBuilder,但GWT仅提供客户端,您负责服务器端因此可缓存性)