我听说浏览器可以从服务器接收gzipped页面,那么它们是否也可以gzip表单数据并发送到服务器?如果可能的话,我该如何在服务器上解压这些数据?
我正在使用AppEngine的webapp模块,但一般的解释/教程指针就足够了。我已经搜索过了,但没有结果。
我听说浏览器可以从服务器接收gzipped页面,那么它们是否也可以gzip表单数据并发送到服务器?如果可能的话,我该如何在服务器上解压这些数据?
我正在使用AppEngine的webapp模块,但一般的解释/教程指针就足够了。我已经搜索过了,但没有结果。
简短回答:
不,大多数浏览器不会为客户端请求压缩表单数据。
详细回答:
是的,所有浏览器都允许客户端发送压缩的表单数据。但由于浏览器不会为我们压缩数据,我们必须自己压缩。
Gzip使用DEFLATE算法,该算法是公开可用且免费使用的。可以在客户端使用JavaScript对表单数据进行压缩(如果您不想自己编写,可以下载一个JS Gzip库),然后使用XMLHttpRequest通过GET、POST或PUT发送压缩后的数据到服务器。
如果您控制您的Web服务器,则可以简单地获取数据并解压缩它。如果您没有控制权,则必须遵循设置的任何策略。例如,某些Web服务器可能需要您设置特定的Content-Type,而其他服务器可能根本不支持。
最后请注意,如果您的资源是已经压缩的文件,则可能没有gzipping它的优势。但是,如果您的资源是巨大的未压缩数据(例如80000个字符的论坛帖子),则优势是巨大的。