2

OracleのWebサイト(http://docs.oracle.com/cd/A97688_16/generic.903/bp/j2ee.htm、3.1.12使用しない場合はJSPページバッファを無効にする)の一部のドキュメントには、次のように記載されています。

バッファリングを必要とするJSP機能を使用していない場合は、それを無効にしてパフォーマンスを向上させることができます。メモリはバッファの作成に使用されず、出力はブラウザに直接送信できます。次のディレクティブを使用して、バッファリングを無効にできます。

<%@ page buffer="none" %>

ただし、「バッファリングが必要なJSP機能」とは何かを正確に指定しているドキュメントは見つかりませんでした。私は一般的に、どのような状況でバッファを増減するとパフォーマンスが向上するかどうかはわかりますが、どのような機能がバッファリングを「必要とする」かはわかりません。

どのような状況でバッファリングをオフにする必要がありますか、および/またはどのような状況でバッファリングをオフにすべきではありませんか?

4

1 に答える 1

1

実は、「当たり前」の瞬間がありました。response.setHeader(...)やなど、応答とともに返されるヘッダーを操作する JSP で実行できることがあります<jsp:forward />。これらは明らかに、応答がコミットされてデータがクライアントに流れ始める前に必ず発生する必要があります。バッファリングを無効にすると、ヘッダーを設定したり、転送タグを使用したりすることができなくなります。これは、データがクライアントにすぐに流れ始めるため、望ましい場合と望ましくない場合があります。なんでそんなことしか思いつかなかったのかわからない…

基本的には、ヘッダーを設定したり、転送タグを使用したりする機能を失うことよりも、パフォーマンスの方が重要かどうかということになります。その場合は、バッファリングを無効にする必要があります。ヘッダーを設定したり、転送タグを使用したりできることが重要な場合は、バッファリングを有効のままにしておく必要があります。

今後 2 日以内に誰かが私を訂正したり、より良い回答を投稿したりできる場合は、代わりにそれを回答として喜んで受け入れます。

于 2013-02-01T03:46:11.527 に答える