我想我需要压缩文件,但是,如何在客户端javascript上解压缩呢?
这样做值得吗?还是解压所需的时间会抵消下载节省的时间?
更新
只是为了明确,该文件是文本(数据),而不是代码。
你能使用HTTP压缩吗?
是的,您不需要自己处理压缩/解压缩,浏览器会为您完成,您只需要指定您使用的服务器的参数即可。 注意:您可以明确指定响应格式的所有MimeType。 例如:
以下是Tomcat服务器设置参数。
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11Protocol"
SSLEnabled="true"
maxThreads="200"
compression="on"
compressionMinSize="2048"
compressableMimeType="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,charset=UTF-8,application/x-www-form-urlencoded,text/html,text/plain,text/css,text/javascript,text/json,application/x-javascript,application/javascript,application/json"
/>
Content-Encoding:gzip
Accept-Encoding: gzip, deflate
这是使用编码的,网络选项卡中的大小列将显示已减小的大小。
[旧问题,但以防其他人遇到相同问题...]
处理这个问题的最佳方法是使用HTTP压缩。所有主流网络服务器和浏览器都支持此功能。事实上,如果你正在使用一个网络托管服务,并且你的文件是通常需要压缩传输的文件类型(例如css、js、html),那么它很可能已经在传输过程中进行了压缩,只是你没有意识到而已。
[这是一个很老的问题,但仍然会出现在搜索结果中]
最终我写了一个小型、自包含的库来完成这个任务。它可以将JSON数据压缩/解压缩成可打印的ASCII字符串。经过压缩后,解压器的大小为2410字节,压缩器的大小为3177字节。
解压缩 JavaScript
不可能隐藏压缩的代码。
/packer/ 压缩过的典型 JavaScript 以以下代码开头:
`eval(function(p,a,c,k,e,r)`…
`eval` can simply be replaced by `alert`.
eval
函数评估包含JavaScript的字符串参数。在大多数打包程序中,eval
通常与document.write
一起使用。
要解压JavaScript,请将这些方法替换为以下方法之一:
1. 用alert
替换eval
(例如:alert(function(p,a,c,k,e,r)
……并在打开或刷新html页面时,在弹出窗口中简单地打印代码)
2. 如果JavaScript出现在<body>
元素之后,您可以添加一个<textarea>
,如下所示:
`<textarea id="code"></textarea>`
然后,将eval
(...);替换为document.getElementById("code").value=...;
从这两个选项中,第一个更简单...祝你好运 :)