在嵌入式web服务器上进行压缩的GWT应用程序部署

在嵌入式web服务器上进行压缩的GWT应用程序部署,gwt,embedded,compression,Gwt,Embedded,Compression,我正在尝试在自定义web服务器上部署一个仅限GWT客户端的应用程序。我在.GWT.xml文件中使用的GWT预压缩链接器如下所示: 在我的html文件中,我加载javascript并引用nocache.js.gz: 编译器按预期生成压缩的javascript文件。但是,当我运行应用程序时,应用程序正在从web服务器请求*.cache.js文件,而不是我所期望的*.cache.js.gz文件 我使用的自定义web服务器不处理动态压缩,因此我想知道是否有办法配置GWT编译器以生成请求*.cache.j

我正在尝试在自定义web服务器上部署一个仅限GWT客户端的应用程序。我在.GWT.xml文件中使用的GWT预压缩链接器如下所示:

在我的html文件中,我加载javascript并引用nocache.js.gz:

编译器按预期生成压缩的javascript文件。但是,当我运行应用程序时,应用程序正在从web服务器请求*.cache.js文件,而不是我所期望的*.cache.js.gz文件

我使用的自定义web服务器不处理动态压缩,因此我想知道是否有办法配置GWT编译器以生成请求*.cache.js.gz文件而不是*.cache.js文件的代码?我似乎找不到这方面的任何文档,但如果我在文档中遗漏了什么,我希望能有一个指针

如果有办法将GWT编译器配置为生成请求*.cache.js.gz文件的代码

没有

让我们做一个思维实验。比方说,我们可以让GWT从您的自定义服务器请求gzip文件

谁来解开它?GWT浏览器客户端?不,您必须编写自己的浏览器。GWT客户端中的所有Java都被翻译/编译为Javascript。浏览器上的Javascript无法调用浏览器的主机JVM来解压,这是出于安全原因

谁来解开它?服务器?然后您的自定义服务器必须处理它。您需要扩展自定义服务器的功能

很抱歉,我很抱歉,但我希望您仔细考虑Javascript客户端和自定义服务器之间的数据交换。有人必须解压文件,在某处-我肯定它不会是集线器或路由器或传输电缆/媒体

我建议人们在沉迷于GWT之前,先掌握一些JSP/JEE编程的技能。使用JSP生成浏览器显示的javascript和HTML。当您对JSP生成的内容有了合理的经验后,您将倾向于理解GWT客户机服务器的约束、优势和需求。如果不是JSP,那么至少PHP将生成.gz文件。 但是,并非所有浏览器都支持预压缩资源,因此默认情况下不会加载这些资源


您必须配置web服务器/后端服务器,以便它检查是否有可用的预压缩资源,以及客户端是否支持压缩,然后重写请求以检索*.gz文件而不是非压缩文件。

I最后运行了以下命令post gwt compile,因为我找不到合适的解决方案:find app-name*.js-exec perl-pi-es/cache.js/cache.js.gz/g;{} \; -exec gzip-f{};默认情况下不应该替换它,因为旧浏览器无法处理预压缩的资源。如果你只支持现代浏览器,那就不会有什么困难了。谢谢。我知道旧的浏览器无法处理它。我希望GWT检查用户代理,然后在可能的情况下实际请求.gz。但是你看到我使用IE8+、FF4+、Safari 5+的方法有什么问题吗?我同意实际上有两种方法来进行检查:客户端通过用户代理或服务器端检查HTTP头(如果支持压缩)。我认为上面提到的浏览器都应该支持gzip压缩。但是你可以检查一下,我想你误解了海报的问题。他不是要求通过Javascript/GWT解压/压缩内容,而是要求如何自动加载预压缩资源。现代浏览器支持服务器端压缩。除了未压缩的资源或预压缩的资源之外,GWT中还生成了一个。然而,GWT不会自动获取它们,因为只有现代浏览器才支持压缩。@BlesedGeek所有现代浏览器都支持透明地自动解压缩gzip编码的内容。没有必要编写自己的浏览器或访问JVM。+Joseph,你不知道GWT是什么。浏览器驱动的解压缩映射到外部进程。外部进程,出于安全原因,标准浏览器拒绝将内容注入另一个url:port的页面。因此,解压对gwt是无用的。@BlessedGeek内容编码是Joseph可能指的机制。对于那些偶然发现这个问题的人,请参见: