有没有一个插件可以自动缩小和缓存 JavaScript?
Posted
技术标签:
【中文标题】有没有一个插件可以自动缩小和缓存 JavaScript?【英文标题】:Is there a plugin which will automatically minify and cache JavaScript? 【发布时间】:2011-10-04 23:22:10 【问题描述】:我正准备开始一个新项目,我想知道是否有一种方法可以在服务器端自动缩小 javascript,一旦 JavaScript 已经缩小一次就提供缓存?我可以简单地编写一个构建脚本来完成此任务,但如果我可以“即发即弃”,可以说是自动缩小,那就太好了。在这种情况下,推荐的路线是什么?我应该在我的 JavaScript 上线之前以时间为代价缩小它,还是应该寻找可以在服务器端自动为我完成的东西?
编辑
我可能会使用 Django,但当然,JavaScript 和媒体是与实际的“html”/应用程序输出分开提供的。
【问题讨论】:
这实际上取决于您使用的服务器端框架;您可能应该指定。 自动化的东西。否则会很疯狂。 放到构建过程中。 code.google.com/closure/compiler 【参考方案1】:这完全取决于您使用的服务器端语言。它与 Javascript 或 Css 无关(太多),而是 php、.NET、Ruby 等。
(注意:这些只是我完成的一些快速搜索。我对其中任何一个都没有任何经验。)
PHP:How to minify JS or CSS on the fly .NET:Minifying and combining files in .net 鲁比:Juicer - a CSS and JavaScript packaging tool我个人建议不要在运行时进行ANY的缩小/合并,因为服务器端的性能会反复发生 /em> 再次。
以上是我的“答案”
以下是我的“偏好”
我的偏好是使用某种构建时间缩减/组合工具,它可以一次性实现目标,让服务器只“服务”。
由于我为我的 IDE 运行 Visual Studio,我的偏好是使用一个名为 Chirpy 的工具...最终结果是单个静态 site.min.js
文件和单个静态 site.min.css
文件那有我需要的一切。我将不再因在运行时组合/缩小我的 js/css 而对性能造成影响。
编辑
请务必阅读下面的 cmets,因为它们有助于增加 OP 正在寻找的整体概念。
编辑
也刚刚找到WebPutty,看起来很漂亮的工具。
【讨论】:
当然。我不知道有像 Chirpy 这样的东西可以将它们合二为一,所以这真的很酷。希望如果我滚动类似 YUI 和mod_deflate
或 mod_gzip
的内容,我将获得最佳性能和文件大小。
但是,是否有任何框架可以缩小 和 缓存 JavaScript? (即:第一个请求导致代码被缩小并保存到缓存文件,第二个请求只是拉出缓存文件)
进行缓存的最佳方式是拥有一个单独的域名,并让您的 Web 服务器进行缓存。 IIS 和 Apache 都有这样做的方法。如果您查看 *** 源代码,您会发现所有静态文件都来自 http://cdn.sstatic.net/
- 它曾经不是 cdn...而且它们仍然能够从 http://sstatic.net
中获得良好的缓存性能。跨度>
请记住,静态域必须是“无 Cookie”,这意味着它不能只是您现有域之外的子域。
作为额外的信息,请务必SPRITE 您的图片以提高性能。【参考方案2】:
YUI Compressor 对我来说非常有效,需要服务器上的 Java 并且您将正确的参数传递给它:
这是我使用的构建脚本(用 Ruby 编写,但不是必须的),它使用正确的参数调用压缩器,仅此而已。
#
# Build JS Files
#
require 'rake/packagetask'
JAVA = 'java'
OUTPUT = 'public/js/sitel-core.js'
MINOUTPUT = 'public/js/sitel-core.min.js'
OUTCSS = 'public/css/styles.css'
MINCSS = 'public/css/styles.min.css'
WIZOUT = 'public/js/sitel-wizard.js'
WIZMIN = 'public/js/sitel-wizard.min.js'
desc "Build CSS Scripts"
task :buildcss do
files = 'public/css/styles.css'
`#JAVA -jar build/yuicompressor.jar #OUTCSS -o #MINCSS`
end
desc "Build JS Scripts"
task :build => [:buildcss] do
files = 'public/js/sitel.js public/js/sitel/popup.js public/js/microtable.js public/js/microbox.js public/js/sitel/popup.page.js public/js/sitel/flexigrid.js public/js/flexigrid/flexigrid.js public/js/nyroModal-1.6.2/js/jquery.nyroModal-1.6.2.js public/js/help-bubble.js public/js/sitel/elgg.js'
`cat #files > #OUTPUT`
`#JAVA -jar build/yuicompressor.jar #OUTPUT -o #MINOUTPUT`
wizard = 'public/js/wizard2.js public/js/dual-select.js public/js/filterbox.js public/js/jquery-validate/jquery.validate.js public/js/smartsearch.js public/js/smartsearch-validator.js public/js/flexigrid/flexigrid_helper.js '
`cat #wizard > #WIZOUT`
`#JAVA -jar build/yuicompressor.jar #WIZOUT -o #WIZMIN`
end
desc "Build JS Scripts"
task :default => :build
【讨论】:
YUI 是我认为大多数其他应用程序运行的“标准”压缩器。我知道 Chirpy 在床单下使用 YUI。【参考方案3】:如果您使用 Apache,您可以使用此解决方案,即时提供缩小的 js 文件: https://www.unixmen.com/how-to-auto-minify-javascript-files-on-page-load-in-apache-using-uglifyjs/
【讨论】:
还有一个 nginx 模块:github.com/nginx-modules/nginx-minify以上是关于有没有一个插件可以自动缩小和缓存 JavaScript?的主要内容,如果未能解决你的问题,请参考以下文章
自动布局可以调整 UITableView 的大小以在 ipad 上纵向增长和横向缩小吗?