alibaba/nginx-http-concat

concat语法支持问题

zzjin opened this issue · 4 comments

我们之前一直在用tengine的concat模块,之前都是手动修改源文件里面的多个script标签到一个??格式的标签的
但是最近加入了一个自动编译的脚本,会遍历所有的script标签,按照LCP(longest common prefix)算法提取连接里面的前缀,再拼接到地址里面去,
比如有两个script标签

<script type="text/javascript" src="/Public/Vendor/jquery.func1.js"></script>
<script type="text/javascript" src="/Public/Vendor/jquery.func2.js"></script>

之前人工合并的时候会改写成:

<script type="text/javascript" src="/Public/Vendor/??jquery.func1.js,jquery.func2.js"></script>

执行就是好的,但是采用了自动脚本的LCP语法之后,会被自动替换成

<script type="text/javascript" src="/Public/Vendor/jquery.func??1.js,2.js"></script>

这样这个模块就不支持了.
我在文档里面没有看到说明说两个问号比武放在/这个位置的正后面?

"??" 后面的内容表示文件名, 如果使用LCP算法,应该找的是目录的最长前缀,文件名的部分不应该计算在最长前缀里面

我们现在已经改过来了,但是如果文件名的前缀较多或者一次合并十来个文件的时候还是希望能最小化生成的路径长度.而且??后面跟上路径也是支持的.也不是纯的文件名,比如
<script type="text/javascript" src="/Public/??Vendor/jquery.func1.js,func2.js"></script>
也是支持的...

"/Public/??Vendor/jquery.func1.js,func2.js" 这种路径是支持,表示需要合并的两个文件分别是:/Public/Vendor/jquery.func1.js, /Public/func2.js

有没有可能说有一个选项,直接简单的拼接??后面的数据,然后还是以逗号,分割,吧拼接后的路径进行查找呢?只要最后拼接后的路径是ok的,??打在哪里就不是那么重要了

从语义上来说??后面就是一个文件的相对路径更好理解,还是说相对路径用作各种缓存用了?