2016-04-16 19 views
0

1回のリクエストで複数のファイルを扱うことは可能ですか?Node.jsは1回のリクエストで複数のファイルを扱います

ここには、パラメータを含まないnode.jsサーバーへのリクエストでWebサイトのホームページを提供するための単純化されたバージョンのコードがあります(サーバーの効率を上げるためにファイルデータをキャッシュするキャッシュコードがあります。など):ページが正しく務めたが、3つの別々れ

<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"> 

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のと参照を使用して外部ライブラリをインポート要求は、ページを提供してください。私は、これによってWebサイトの読み込みが遅くなり、サーバーに不必要な負荷が加わることが想像されます。

コンテンツタイプが異なるにもかかわらず、1つのリクエストで3つのファイルをすべて提供できますか?もしそうなら、私たちはこれらのファイルをすべてhtmlファイル内の1つのリクエストでどのように扱いますか?そうでない場合は、現在使っているものをページに提供する効率的な方法がありますか?

答えて

2

1ページの場合は、スクリプトとスタイルタグに入れるだけで、画像はデータURLに置くことができ、あなたは満足しています。これらのファイルを使用する複数のページの場合は、ブラウザに取得してキャッシュさせる方がよいでしょう。

私はいくつかのプロトコル(http2?)があったと思います。サーバーは、ブラウザが次に要求する追加のファイルを送信できます。しかし、私はその技術がどのように呼ばれたのか分かりません。

幸い、面白い質問!

2

ファイルをダウンロードしているのですか、ブラウザでレンダリングしていますか?ブラウザーでそれらをレンダリングする場合、ブラウザーは帯域幅を最適化するために複数の同時要求をリソースに対して行うことができ、単一のブロッキング要求を行うことがより理にかなっています。 CDNへの3つの別々の要求は並行しており、これはより速くなります。

+0

私は何を意味するかをよりよく説明するためのサンプルコードを含む質問を頻繁に更新しました – Adam0410

関連する問題