Scott Hanselman は最近、セッション/キャッシュに格納された文字列を圧縮する方法を説明するブログ記事を投稿しました。これはかなり有望に見えますが、セッション/キャッシュに保存しているデータの大部分は文字列ではなくカスタム クラスです。これらをどのように圧縮しますか?
私の最初の考えは、BinaryFormatter を使用して最初にオブジェクトをシリアル化し (カスタム クラス オブジェクトをセッション/キャッシュに格納するときに ASP.NET フレームワークが通常行うように)、次に結果のバイト配列を圧縮することです。ただし、これには、セッション/キャッシュから取得されたデータが読み取り専用になるという悪影響があります (解凍と逆シリアル化によって新しいメモリ内オブジェクトが作成されるため)。
つまり、コードが現在次のようになっている場合、そのストレージをセッションに圧縮する方法はありますか?
MyClass foo = new MyClass();
Session["foo"] = foo;
MyClass retrievedFoo1 = (MyClass) Session["foo"];
retrievedFoo1.Property1 = "property 1";
// retrievedFoo2.Property1 should equal "property 1"!
MyClass retrievedFoo2 = (MyClass) Session["foo"];