我想知道是否有办法实时压缩javascript,就像gzip适用于HTML(显然是CSS)一样?
我不想在每次上传之前手动压缩我的文件,我希望服务器为我做这件事而不需要懒惰编码器的任何额外工作。
答案 0 :(得分:3)
gzip适用于所有文本,包括JavaScript
如果你想进行更多压缩(例如在gzipping之前使用YUI压缩器),那么你可以让你的服务器去做,但在上传之前这样做会更容易。
诀窍是自动化构建和发布过程 - 所以你运行一个执行压缩然后上传结果的脚本,而不是手动或类似地拖动文件。
答案 1 :(得分:2)
我建议您编写一个自动上传文件的小脚本;然后你可以在上传前压缩它。
另一种选择是告诉您的Web服务器在传输之前压缩文件(但它应该自动执行)。
另一个选项是服务器上的cron作业(请参阅cron(1)
或Windows调度程序),它定期检查文件(例如每天一次),并在上载新版本时对其进行压缩。
答案 2 :(得分:2)
在Apache上,这会压缩除图像之外的所有内容:
<IfModule mod_deflate.c>
# Insert filter
SetOutputFilter DEFLATE
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won't work. You can use the following
# workaround to get the desired effect:
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>
答案 3 :(得分:2)
如果您的意思是“压缩”,如“以完全相同的格式维护代码,但将其按下管道压缩”,则根据服务器的说明启用gzip压缩,您未在标签中指定/问题。
如果您的意思是“压缩”,如“minify the code”,则可以尝试选项,例如在管道中包含缩小模块/流程。我最近在ASP.net中创建了一个解决方案,它使用Microsoft Ajax Minifier 4.0来简化所请求的javascript文件,动态基本上是通过向src标签添加脚本标签这类似于minifier.ashx?source = my / javascript / file /和/ path / here.js,并使用AjaxMin.dll中的Minifier类来按需缩小代码。与预缩小相比,这有几个优点:
重氮基优点: