Response.Filter を使用しています。Write メソッドをオーバーライドしています。しかし、Write メソッドが何度も実行されており、Write メソッドの応答 html がチャンクになっていることがわかります。Write メソッドで完全な html を読み取る (そしてフィルタリングする) にはどうすればよいですか。
質問する
297 次
1 に答える
1
これは、Web サイトのパフォーマンスに影響を与える可能性があるため、避ける必要があります。フィルターはストリームであり、低レベルであり、応答バイトを直接操作することを目的としているため、Gzip 圧縮などを行うのに理想的です。
理想的には、フィルター操作をチャンクで試して実行する必要があります。本当にできない場合は、に基づいてフィルターを作成できますMemoryStream
。メモリ内バッファーを作成することになるため、応答が比較的短くなるようにしてください。
public class ReadAllIntoMemoryFilter : MemoryStream
{
private readonly Stream _baseFilter;
public ReadAllIntoMemoryFilter(Stream baseFilter)
{
_baseFilter = baseFilter;
}
public override void Close()
{
var bytes = GetBuffer();
// do your work here
_baseFilter.Write(bytes, 0, bytes.Length);
_baseFilter.Close();
base.Close();
}
}
于 2012-07-23T14:32:09.023 に答える