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"];