0

ノードを使い始めたばかりです。ソケットIOを備えたシングルページWebアプリを構築したいと思います。簡単なサーバーコードを作成しました:

http.createServer(function(req, res) {

    //Requested url split.
    var pathname = url.parse(req.url).pathname;
    var extension = path.extname(pathname).toLowerCase();

     console.log(pathname + " " + extension);

    if(extension == ".png"){
        res.writeHead(200, {
            'Content-Type': 'image/png'
        });  
   }
}

私はこのようにすべてのファイルを提供しますが、html、css、およびjsファイルを提供するための他の「elseif」の場合があります...

mozillaではすべてがOKです。Chromeでは、2つの問題が発生します。

Image()オブジェクトを使用してプリロードを実行した場合でも、クライアント側のjsコードで使用するたびに、キャッシュなし->同じ画像が要求されます。ロードされた画像のプロパティにアクセスできません->image.width()またはheightを取得できません(0を返します)。Firefoxでキャッシュが機能し、画像のプロパティを取得できます。

Apacheサーバーを使用すると、両方のブラウザーですべてが正常に機能しました。

私は完全に立ち往生しています、何か考えがありますか?

4

2 に答える 2

1

キャッシュに関しては、静的ファイルのコードで明示的にキャッシュ ヘッダーを設定してみてください。

于 2012-09-25T09:45:48.090 に答える
1
res.writeHead(200, {
    "Cache-Control" : "max-age=86400",
    'Content-Type': contentType
});

問題解決 (両方) ! しかし、ユーザーがキャッシュを無効にすると、大量のファイル要求でサーバーにスパムが送信されるということでしょうか?

キャッシュとは別にファイルをローカルに保存する方法はありますか? JS 変数に画像を保存したいですか?

またはそれを達成する他の方法はありますか?

于 2012-09-25T12:10:47.033 に答える