考虑以下问题。您希望为您的 GWT 项目提供离线清单/应用程序缓存文件。在这种情况下,有两个问题:
- GWT 生成不同排列的 js 文件(取决于浏览器版本)。加载应用程序时,一些 GWT javascript 代码使用您的用户代理属性来包含适当的属性。您需要为这些排列中的每一个生成一个不同的清单文件,因为您不想缓存您不会使用的文件(这些文件每个排列可能约为 0.5MB)。MGWT Manifest Linker涵盖了这个问题,它在编译过程中生成不同的清单文件
- 在浏览器中加载 webapp 时提供适当的清单文件
这个问题与问题 2 相关。我们如何以稳健的方式动态地为这个清单提供服务?MGWT 使用服务于清单的servlet,这取决于请求中的用户代理。您需要将您的用户代理字符串(例如Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1)
)映射到“用户代理ID”(例如ie6
)。使用 MGWT 链接器创建的映射文件,您可以找到提供给客户端的清单文件。一个主要的缺点是您需要执行一些简单的字符串操作来将完整的用户代理字符串映射到这个用户代理 id,并进行一些简单的字符串匹配。您将无法为此类映射重用客户端 GWT 代码。(这一切都在本主题中讨论)。因此,每当 GWT 收到更改排列数量和/或支持的浏览器的更新时,您也需要更改 servlet 代码。换句话说:这不是一个强大的解决方案。
问题是:我们可以通过在客户端动态地提供这些文件,以不同的方式为这些 GWT 排列提供清单吗?