2

The so-called "14 Golden Rules of High-Performance Websites" are:

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

I'm wondering which ones GWT addresses auto-magically for its developers. For instance, as a single-page app, I'm sure Rule #1 (fewer HTTP requests) is covered under the hood. But what about Rule 9 (reduced DNS)? Rule 13?

Of these, the only one I don't think is applicable to any web framework is #2 (CDN), so let's pretend that's not on the list. So I ask: of the remaining rules, which ones does GWT address, and which ones does it not?

4

1 回答 1

8
  1. ClientBundle将内联资源(CSS,图像作为data:URL);从历史上看,ImageResources 被组合成 IE6/7 的“CSS sprites”(对 IE6/7 的支持将在 GWT 的下一个版本中删除,但在 switch 之后仍然可以进行 sprites)。RequestFactory进行批处理(这也可以通过 GWT-RPC 实现,使用命令模式和自定义包装器)
  2. 使用xsiframe(or xs) 链接器,您的脚本不需要托管在与 HTML 主机页面相同的来源(xs代表跨站点),以便它们可以由 CDN 提供服务
  3. GWT 生成具有唯一名称的文件,以使远期过期成为可能;见http://www.gwtproject.org/doc/latest/DevGuideCompilingAndDebugging.html#perfect_caching
  4. 您可以自己对 GWT 编译器的输出进行 GZip(或者让您的 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 在这里不会真正提供帮助。大多数应用程序将CssResources 用于 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 组织以便更好地压缩压缩、函数合并)来优化它们
  11. GWT 不使用重定向(它不会在服务器端做很多事情);这条规则不是关于工具,而是关于你的代码。
  12. 另一个规则是站在这边而不是工具上。
  13. 同上(另见#3 和#14)
  14. 同上;尽管 GWT-RPC 和 RequestFactory 是无法利用 HTTP 缓存的“RPC”协议。此规则适用于“REST”请求(当然,通过 GWT 可以通过或RequestBuilder,但 GWT 仅提供客户端,您负责服务器端因此可缓存性)XMLHttpRequestJsonpRequestBuilder
于 2013-07-09T08:12:23.453 回答