[英]Node.js serve multiple files in one request
是否可以在一个请求中提供多个文件?
这是我的代码的简化版本,可用于在不包含任何参数的对node.js服务器的请求中为我们网站的主页提供服务(有缓存代码可缓存文件数据以提高服务器效率,处理错误等)。 :
var http = require("http");
http.createServer(function(req, res){
res.setHeader("Access-Control-Allow-Origin", "*");
if (req.url == "/"){
res.writeHead(200, {"Content-Type": "text/html"});
fs.readFile("./pages/index/index.html", function(err, data){
res.end(data);
});
} else if (req.url == "/index.css"){
res.writeHead(200, {"Content-Type": "text/css"});
fs.readFile("./pages/index/index.css", function(err, data){
res.end(data);
});
} else if (req.url == "/index.js"){
res.writeHead(200, {"Content-Type": "application/javascript"});
fs.readFile("./pages/index/index.js", function(err, data){
res.end(data);
});
} else if (req.url == "/indexBackground.jpg"){
res.writeHead(200, {"Content-Type": "image/jpeg"});
fs.readFile("./pages/index/images/background.jpg", function(err, data){
res.end(data);
});
}
}).listen(port);
html文件本身使用CDN导入外部库,对样式表,脚本和图像的引用如下所示:
<link rel="stylesheet" href="https://our-website-url/index.css">
<script type="text/javascript" src="https://our-website-url/index.js"></script>
<img src="https://our-website-url/indexBackground.jpg">
该页面已正确投放,但必须提出3个单独的请求才能投放该页面。 我可以想象这会使网站加载速度变慢,并给服务器增加不必要的负载。
尽管它们具有不同的内容类型,但是否可以在一个请求中提供所有3个文件? 如果是这样,我们如何将这些文件全部引用到html文件中的一个请求中;如果不是,是否有一种更有效的方法来提供当前正在使用的页面?
您正在下载文件还是在浏览器中渲染它们。 如果要在浏览器中呈现它们,则更有意义的是浏览器可以发出多个并发资源请求以优化带宽,而不是发出单个阻止请求。 对CDN的3个单独请求将是并行的,这将更快。
如果是单个页面,则只需将它们放在脚本和样式标签中,将图像放在数据URL中就可以了。 如果使用这些文件的页面是多个,最好让浏览器获取并缓存它们。
我认为服务器可以发送一些协议(http2?)来发送浏览器接下来将继续请求的其他文件。 但是我不知道该技术叫什么。
祝你好运,有趣的问题!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.