我们的应用程序中有数百个 JavaScript 文件,目前以未压缩的方式提供。为了提高客户端性能,我们的解决方案之一是缩小 JavaScript 文件。我已经创建了一个自动化解决方案来在构建中执行此操作,但是,当部署这些新文件时,确定是否将其重新发送给客户端的文件时间戳将会更改。这意味着,在未来的每个版本中,所有 javascript 文件都将具有新的时间戳。我们的客户将再次重新下载所有缩小的 JavaScript 文件,从而破坏缩小的性能方面。
这是其他人遇到过的问题吗?你的解决方案是什么?您的项目中是否使用了单独的非缩小和缩小的 javascript 文件,并且不在构建中执行缩小?
我们考虑了其他解决方案(例如仅在源代码控制存储库中查找实际更改的文件),但这是我想了解其他人正在做什么的一个问题。
我在php中有以下正则表达式来缩小原始css字符串:
function compress( $css ) {
$css = str_replace('; ',';', $css);
$css = str_replace(': ',':', $css);
$css = str_replace(', ',',', $css);
$css = str_replace(' }','}', $css);
$css = str_replace('} ','}', $css);
$css = str_replace('{ ','{', $css);
$css = str_replace(' {','{', $css);
$css = str_replace('( ','(', $css);
$css = str_replace(' (','(', $css);
$css = str_replace(' )',')', $css);
$css = str_replace(') ',')', $css);
$css = str_replace(array("\r\n","\r","\n","\t",' ',' ',' '),"",preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!','',$css));
return $css;
}
Run Code Online (Sandbox Code Playgroud)
这有效,但代码很糟糕.
有人知道更好的写这个方法吗?
这个问题不是如何连接和缩小js代码 - 它是什么时候,应该做什么.(也许是JS从客户端入侵服务器的结果)
根据我的理解,连接代码是一种减少脚本请求数量的手段.因此,此任务应该在将被请求并在客户端中运行的JS上运行 - 连接在Node上运行的文件将没有任何用处.
另一方面,缩小作为一种在不影响功能的情况下减少脚本总大小的技术,从而减少了请求中传输的比特数.同样,这种技术似乎最适用于打算传输到客户端的代码.
在我的服务器上运行的JS上执行这些任务可以获得任何性能提升吗?
我有一个 symfony 4 Web 应用程序,我正在尝试缩小 CSS,但它不起作用。我已经尝试了几个小时,但一直无法让它提供缩小版本。难道我做错了什么?
webpack.config.js
var Encore = require('@symfony/webpack-encore');
Encore
// the project directory where compiled assets will be stored
.setOutputPath('public/build/')
// the public path used by the web server to access the previous
directory
.setPublicPath('/build')
.cleanupOutputBeforeBuild()
.enableSourceMaps(!Encore.isProduction())
.splitEntryChunks()
.enableSingleRuntimeChunk()
.enablePostCssLoader()
// uncomment to create hashed filenames (e.g. app.abc123.css)
// .enableVersioning(Encore.isProduction())
// uncomment to define the assets of the project
.addEntry('js/app', './assets/js/app.js')
// .addStyleEntry('css/app', './assets/css/app.scss')
// uncomment if you use Sass/SCSS files
// .enableSassLoader()
// uncomment for legacy …Run Code Online (Sandbox Code Playgroud) 我有一个从 Presto 获取数据并执行一些 ETL 并将 CSV 文件推回到 s3 存储桶的流程。我的流程如下:
**QueryDatabaseTable -> convertRecord -> RouteText -> puts3Object**
Run Code Online (Sandbox Code Playgroud)
我知道我们可以通过 cron 作业调度功能来实现这一点。这个想法是每天早上在 s3 存储桶中摄取新文件。
cron 语法是什么?我试过了0 0 3 1/1 * ? *,但似乎不是每天凌晨 3 点运行。有什么理由吗?
我怎样才能实现这个目标?
提前致谢!
我正在寻找一个工具来解析JS文件,同时恢复整个文档中的变量名称.
例如,在unminify.com上运行缩小代码后,代码本身包含:
W.find("li.patternItem").click(function() {
Run Code Online (Sandbox Code Playgroud)
在代码的末尾有一个参考什么是W:
W = $("#pattern1")
Run Code Online (Sandbox Code Playgroud)
所以我正在寻找一个简单的脚本来恢复代码中的名称,但找不到一个.我知道自动替换可能对代码有害,但我想应该有一些聪明的方法来恢复.现在我手动完成并替换"W".用"$("#pattern1")." (匹配大小写,最后带点)所以它不会与任何W字母混合.
谢谢
我正在Windows操作系统上运行100个Javascript文件,并遇到了几乎一半的问题.事实证明,minfiying压缩器无法正确缩小具有点所示功能的js文件.对于YUI压缩器,它会在发生这种情况时删除文件的内容,而对于Ajaxminifier,它只是忽略点并在它之前取出函数名.
有问题的功能示例:
function window.onload() {}
Error Message: :missing ( before function parameters
Run Code Online (Sandbox Code Playgroud)
使用YUI压缩器作为MSBuild任务和命令行都会产生相同的结果.
命令行示例:
java -jar yuicompressor.jar --type js --charset utf-8 -o D:\foo.js D:\foo-min.js
Run Code Online (Sandbox Code Playgroud)
使用Ajax Minifier示例:
命令行:
AjaxMin.exe -o D:\foo.js D:\foo-min.js
Run Code Online (Sandbox Code Playgroud)
但是,一种解决方案是重写功能,缩小过程很有效例如:
window.onload = function() {}
Run Code Online (Sandbox Code Playgroud)
但是现在这不是我们的选择.有谁知道这个问题并能够提供解决方案吗?
谢谢.是的,我确实继承了这些文件,我还没有确定它是用这种方式编写的.我不相信有任何处理器将其转换为正确的JS ..我知道Web应用程序只能在IE上运行,这可能就是为什么这样做的原因.在firefox等,可能不是这样.我希望改变它
另外,一个额外的,不是太无关紧要的问题,你有一个建议/资源/博客,以加快Backbone js库的速度?谢谢.
我想知道如何压缩css/javascript/jquery和一些html页面.通过选择文件夹,它将所有相关文件转换为min.文件.(有没有用C#开发的库?)
提前致谢
minify ×9
javascript ×6
css ×2
apache-nifi ×1
automation ×1
backbone.js ×1
c# ×1
cron ×1
crontrigger ×1
html ×1
jquery ×1
js-beautify ×1
node.js ×1
php ×1
regex ×1
symfony4 ×1
unminify ×1
webpack ×1