2009-03-27 7 views
0

HTTPリクエストを圧縮するHTTPモジュールがあります。インラインスクリプトをエスケープできる圧縮HTTPモジュール

public override void Write(byte[] buffer, int offset, int count) 
{ 
    byte[] data = new byte[count]; 
    Buffer.BlockCopy(buffer, offset, data, 0, count); 
    string html = System.Text.Encoding.Default.GetString(buffer); 

    Regex reg = new Regex(@"(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}"); 
    html = reg.Replace(html, string.Empty); 

    byte[] outdata = System.Text.Encoding.Default.GetBytes(html); 
    _sink.Write(outdata, 0, outdata.GetLength(0)); 
} 

すべてのインラインスクリプトからどのようにエスケープできますか? これは私のスクリプトの正規表現です。

Regex reg = new Regex("<script[^>]*?>[\\w|\\t|\\r|\\W]*?</script>", (RegexOptions.Singleline | RegexOptions.IgnoreCase)); 

答えて

0

は、私は本当にあなたのシステムに固有のEncoding.Defaultを、使用したいことを疑います。それ以外にも、圧縮を行う標準的な方法、つまりテキスト操作を行う代わりにバイナリデータをgzipで圧縮するのはいかがですか?私はそれがより大きな影響を与えるだろうと思うし、誤ってHTMLを壊すという点では壊れやすいほどではない。さらに、エンコーディングについても心配する必要はありません。

+0

すでにIISを使用しているGZipがあります。おかげで – user81740

+0

あなたはすでにgzippingしている場合、これは本当に重要な違いを作りますか?エンコード/デコード/正規表現の置き換えを行うパフォーマンスヒットと一緒に測定しましたか?そして、少し間違ってしまう危険性があります... –

+0

私はあなたの意見に同意します。パフォーマンスは向上していませんが、SEO最適化に使用しています。 – user81740

関連する問題