大津です。

(2013/04/18 13:33), yuichiro wada wrote:
> いただいたコードをちょっといじって動かしてみました。そこそこのサイズだと 
> すぐにキャッシュが終わってしまい、とても大きいファイルでテストすると、メ 
> モリの制限?でいろいろとギクシャクするので、手動ではなかなかうまく想定シ 
> ナリオをテストできませんが、動いているようには見えます。
> 
> if (cache[f]) {
> cache[f].getContent(function(err, buf) {
> response.writeHead(200, headers);
> response.end(buf);
> });
> return;
> }
> 
> // 中略

この「中略」の部分ですが、元のサンプルと同じくファイルストリームの生成し
て open 後の response に pipe で渡しているのでしょうか?

もしそうだとすると koichik さんからの最初の課題の問題は残ったままです
が、それに追加してキャッシュ生成の時間が最初のリクエストに依存する問題も
出てきます。(ここでは koichik さんの指示通り stream1 を前提としてます。)

最初のリクエストの回線がファイル読み込み速度に対して遅く res.write() が
false を頻繁に返す状況だと、いつまでたってもキャッシュ生成が終わらず2つ
目以降のリクエストがずーっと待たされることになると思います。

最初のリクエストへの書き込みもコールバックで一気に処理するよう変えればい
いですが、それですと最初のリクエストでもファイル読み込みが全部完了し、
キャッシュ生成完了を待ってから全部コンテンツを書き込む形になります。

まぁ仕方ないといえばそうですけど、これ以上はまた stream2 の話になっちゃ
うのでこの辺でやめておきますね。

-- 

--- 
このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。
このグループから退会し、メールの受信を停止するには、[email protected] にメールを送信します。
その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。


メールによる返信