繁体   English   中英

Node.js在一个请求中提供多个文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM