Scott Hanselman은 최근 세션/캐시에 저장된 문자열을 압축하는 방법을 설명하는 blog article을 게시했습니다. 이것은 상당히 유망 해 보이지만, 세션/캐시에 저장하는 데이터의 대부분은 문자열이 아니라 사용자 정의 클래스입니다. 어떻게 압축하면됩니까?세션/캐시에 저장된 객체를 어떻게 압축합니까?
처음에는 BinaryFormatter를 사용하여 개체를 먼저 serialize하고 (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"];
세션에 저장된 개체는 프로세스 외부에 저장되어있는 경우 (예 : SQL Server에 저장되어있는 경우)에만 이진 serializer로 직렬화됩니다. –
좋아, 그렇다면 SQL 서버에 저장하기 전에 데이터를 어떻게 압축합니까? –
SQL 서버에 데이터를 저장하는 경우 왜 실제로 압축해야합니까? – jmcd