私は、世代時間が200以上であるかどうかを検出するフィルタをjavaに用意しています。キャッシュ制御ヘッダーを特定の時間に設定します。どのように応答します.setHeaderは動作しますか?
これは、サーバの負荷を軽減するために行われています。
私はそれについての疑いを持っている:
は、レスポンスヘッダの一部を書き込む前に、身体を書くとき、万が一、より多くのメモリを使用してserlvetのcontainterですか?
resp.write()を実行しているときに、サーブレットコンテナ(tomcatなど)が接続にデータを書き込むことはできますか?
メモリの問題が心配です。私は、レスポンスが完了してからサーブレットコンテナが書き出しを開始するまで、バッファなしですべてのレスポンスを生成するために余分なメモリを使用する可能性があると思います。
ほとんどのJavaアプリケーションサーバーは、しきい値に達するまで出力をバッファし、バッファをクライアントにフラッシュします。すべてのHTTPヘッダーが出力されるまで、HTTP本体は出力できません。それがHTTPの仕組みです。 –
@paul:スレッシュホールドに達してバッファがフラッシュされ、resp.setHeader()を実行するとどうなりますか?例外? – user2427
それはまた、アプリケーションサーバーによって異なります。私の経験はWebSphereであり、そのアプリケーション・サーバーは、そのアプローチをIllegalStateExceptionのスローから警告のロギング(http://www-01.ibm.com/support/docview.wss?uid=swg1PQ97899)に変更しました。 –