0

Response.Filter を使用しています。Write メソッドをオーバーライドしています。しかし、Write メソッドが何度も実行されており、Write メソッドの応答 html がチャンクになっていることがわかります。Write メソッドで完全な html を読み取る (そしてフィルタリングする) にはどうすればよいですか。

4

1 に答える 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 に答える