如何在运行时/运行时缩小JS和CSS,以便在运行时/运行时缩小运行时缩放的原始代码结构。如何在运行中缩小JS或CSS
回答
如果我可以这样畅所欲言;
缩小JS/CSS文件的目标是让它更快地解析(并且使用更少的磁盘空间)。通过在运行时缩小它,该好处将完全丢失。
也许我错了你的最终目标,但这是我一开始想到的。
编辑:@Ant的帖子为我澄清了它。
显然,运行时缩减文件被缓存。即便如此,在良好的系统中,它在网站开始时被缩小。当你为你的非常大的Angular应用程序设计了258个适当重构和架构化的JS文件时,这是必需的。它必须是用于调试的运行时。 Debug = true(取决于您的系统),可能会显示真实文件并允许步进。 – 2015-05-01 20:57:45
HTML5 Boilerplate附带一个方便的构建脚本,压缩JS,CSS,图像和更多。一探究竟!
正如其他答案中所解释的那样,“真正的”即时缩小(每次请求时动态压缩文件)并不是一个好主意。
当动态缩小时,只需将其缓存在文件中即可。如果有任何源文件时间戳发生变化 - 即时再次缩小并缓存它。在我所有的项目中工作了多年。 – Meglio 2013-03-18 15:53:16
我认为你的问题实际上应该是:我如何可靠地和可重复地更新我的活服务器?你需要的是一个自动部署脚本。 Personally我更喜欢Fabric,但还有其他工具可用。
自动部署脚本将允许您运行单个命令,该命令将转到活动服务器并更新源代码,运行任何部署步骤(如缩小javascript)并重新启动Web服务器。
您真的不想在JavaScript中缩小JavaScript或css文件,您应该在部署时执行一次操作,然后在您的代码中指定是否实时部署该变量。如果变量为真,那么你的文件链接应该是最小化版本的链接,如果它是假的,那么它们应该是正常版本。
有一些执行最小化的程序,一个还没有提到的程序是JSMin。
“...在文件上”应该是* fly *我认为? ;-) – 2011-03-22 11:07:23
哎呀,好现货:-) – 2011-03-22 11:07:59
这并没有回答这个问题,也没有给出一个好的解决方案。 – Ligemer 2014-01-03 01:08:04
这就是WebUtilities(用于J2EE)。链接在这里。
它确实在缩小和合并的飞行。如果资源没有被修改,它也有缓存来避免重新运行缩小或重新处理资源。它也有助于以下优化。
- 即成多个JS或CSS文件中一个请求
- 添加Expires头的JS,CSS和图像文件可以被浏览器缓存
- 缩减大小JS,在飞行
- 缩减大小内联CSS CSS文件和JS代码块
- 添加字符编码你的回应
- 服务器压缩内容(的gzip /压缩/放气)
- 缓存响应速度加载通过避免再加工
请看看,如果你觉得它有趣。
对于基于PHP的服务器来说,这是什么? – ADTC 2015-12-20 13:39:18
我怀疑这种缩小热潮如果JS与zlib压缩一起发送,真的会造成巨大的差异。
首先,白色空间压缩得非常好,所以由缩小产生的简化文件大小可能只是诸如jQuery之类的大型库的一个主要问题(可能应该从CDN提供,除非您需要黑客版本)。
通常,JS通常由客户端缓存,所以除非在不同页面上使用很多不同的脚本,否则大多数页面加载都不会有所作为。
缩小问题和为什么我不这样做(除了像jQuery这样的东西): A)它会去掉注释,所以除非你重新添加它们,否则像版权声明这样的东西就会丢失。这可能导致许可证违规,因为即使许多OSS许可证要求版权保持完整。
B)当出现问题时,很高兴看到服务器的实际代码,以防万一它发生与您的工作副本不同的情况。小代码在这方面做得不好。
我的个人意见 - zlib可以即时压缩,是的。 minify - 仅适用于真正的大文件。
解析JS到解释器的性能 - 也许如果浏览器运行在具有32MB RAM的Apple Performa上。我不买它,它与大多数剧本产生真正的世界性差异。速度慢的页面通常很慢,因为同时运行的代码太多,效率低下,或者对超载服务器发出太多请求。 (IE你真的需要检查用户名的可用性,因为我输入每个字母?你不能检查当我改变到不同的领域或当我点击提交???;)
A. - 不正确。通常您可以配置缩小器以保留版权注释。例如,请参阅uglify文档。 – Meglio 2013-03-18 15:59:17
我不同意。当页面加载时,如果加载的文件是一个脚本(除非使用async属性),它们会停止加载文件。如果您在加载缓慢页面时打开DevTools,则会看到它被挂起,因为脚本没有被快速下载。将脚本缩小到一定程度会有所帮助。 – 2014-07-06 10:47:56
正如人们所说的,你是在“历史的错误一面”。 Minification(一个运行时进程 - 即使是最小型的应用程序也能够进入“调试”模式,对于大多数AngularJS应用程序来说,都需要组合/缩小。 – 2015-05-01 20:54:58
如果你的目标是让你的JavaScript的可读性稍差,并且在运行时执行此操作,您可以保持它非常非常简单。只需三行代码,您可以在几毫秒内完成全面缩小。
// make it into one long line
$code = str_replace(array("\n","\r"),'',$code);
// replace all multiple spaces by one space
$code = preg_replace('!\s+!',' ',$code);
// replace some unneeded spaces, modify as needed
$code = str_replace(array(' {',' }','{ ','; '),array('{','}','{',';'),$code);
这不会做任何语法检查。使用此代码后,代码可能会失效。检查你的JS中的行结束,是';'在某处失踪?
我刚刚测试过这个版本,如果原始JS中有一个简单的注释(//),它会生成JS错误。在这里断行,检查m y http://imgur.com/a/TzM30 – err 2017-07-29 14:19:43
很多搜索和网站优化后,我真的建议使用这个脚本的CSS文件:
<style>
<?php
$cssFiles = array(
"style.css",
"style2.css"
);
$buffer = "";
foreach ($cssFiles as $cssFile) {
$buffer .= file_get_contents($cssFile);
}
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
$buffer = str_replace(': ', ':', $buffer);
$buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer);
echo($buffer);
?>
</style>
它压缩所有的CSS文件合并成一个和过去的成HTML,减少了额外的请求数零。如果你喜欢这个,你也可以制作你自己的compressed.css文件,而不是将样式粘贴到html中。
- 1. 即时缩小css和js
- 2. 在CSS中运行JS(OnLoad)
- 3. 获取缩小(CSS/JS压缩)到专用服务器上运行
- 4. 如何从资产中使用Symfony中的CSS和JS缩小
- 5. 如何缩小Google AdSense JS?
- 6. 角度如何缩小JS
- 7. 如何缩小CSS和Javascript?
- 8. 如何缩小与CSS
- 9. MVC 4 Portable Areas CSS/JS缩小版
- 10. 组合和缩小CSS/JS文件
- 11. HTML CSS JS缩小体系结构
- 12. Laravel缩小css和js文件
- 13. 根据内容(CSS或JS)缩放字体大小
- 14. ASP.NET中的资源(JS,CSS)压缩,缩小和版本控制
- 15. 如何在运行时检测js文件是否被缩小(Node.js)
- 16. CSS div在缩小时缩小
- 17. 如何让PHP缩小JS和CSS代码?
- 18. 在Visual Studio 2010中单独缩小JS和CSS
- 19. 在Azure项目中缩小和包含js和css文件
- 20. 在grails应用程序中缩小js和css的方法
- 21. 将不同大小的图片放入CSS或JS中的缩略图库中
- 22. Android - 如何压缩或缩小图像?
- 23. 如何在手机上强制缩小或缩小宽度?
- 24. Tomcat7压缩JS/CSS
- 25. JS缩小:压缩代码
- 26. 如何在webview中设置修正缩放级别或缩小?
- 27. 通过服务器缩小/压缩JS和CSS?
- 28. 如何缩小所有js文件?
- 29. 如何在Ubuntu中运行PyCharm - “运行在终端”或“运行”?
- 30. 节点JS缩小
你为什么不保留这两个版本?并在生产中使用Minified并充分开发? – 2011-03-22 10:31:34
+1 Louskan,最佳做法是保留两个版本。 – 2011-03-22 10:33:52
有时候想要一种方法来实现即时缩小。例如,我正在寻找可以插入到现有缓存系统中的代码,因此我只需要一个简单的脚本来缩小CSS/JS的字符串,而我自己的代码将负责缓存。 – orrd 2015-09-17 17:24:40