有没有办法在一个请求中从S3(或任何CDN)获取多个文件?
例如,我在S3上有四个文件:
我希望能够一次请求它们的任意组合。我目前必须单独包括它们:
<script src="example.com/cdn/one.js" />
<script src="example.com/cdn/two.js" />
但我想将它们作为一个请求包括在内:
example.com/cdn/code.js?one&two
我考虑过将所需的组合合并到单个文件中,但是会有太多的组合才能实现。我还考虑将所有这些文件合并到一个文件中,但这样会非常大。
答案 0 :(得分:1)
首先:您的问题更多的是JS,而不是与S3 / CDN相关的问题。并回答你的问题:你不能在一个http请求中“组合”它们。
如果你不想连接和缩小它们,你应该看看RequireJS,它可以处理脚本的加载 - 它是异步的,不会阻止浏览器渲染。
这是一篇非常好的关于异步加载的文章:css-tricks.com - Thinking Async,可以让您更好地了解。
评论后编辑:
实际上,您可以使用PHP来连接&amp;动态缩小你的JS文件,但这会给你的服务器带来额外的负担,你将失去从CDN中获得的好处......另一种方法是使用构建系统,它在生产之前将所有内容打包。
有关此主题的更多信息,请查看以下链接:
要在您的开发系统上进行快速微操作(如果它是Mac),您可能需要尝试CodeKit。
答案 1 :(得分:0)
这是你可以做到的一种方法(假设你只使用一个&amp;两个&amp;三个并且注意文件=一个&amp; file =两个&amp; file = 3):
function getJs() {
var url = window.location.toString();
var query = url.split("?");
var params = query.split("&");
// iterate through array of params and write JS
for (i=0; i<params.length; i++) {
var name = params[i] + ".js";
document.write("<script defer language='javascript' type='text/javascript' src='" + name + "'><\/sc" + "ript>");
}
}
这应该在加载页面后加载。然后在你的HTML中或许。我没有测试过这个,但应该是我想要的东西。