2011-03-16 3 views
0

웹 응용 프로그램을 더 빠르게 만들려면 캐싱을 구현하고 싶습니다. 대부분의 정보가 모든 사용자 (글로벌)에 대해 동일하므로 캐시에서 계속 사용하려는 요소 목록이 다른 클래스가 있습니다. 그러나 요소에는 사용자가 저장해야하는 몇 가지 사용자 정보가 있으며 빠르게 액세스 할 수 있어야합니다 (세션?).전역 및 사용자 정보 (캐시 및 세션) 결합

캐시와 세션의 조합에 대해 생각하고 있었지만 가능하지 않다고 생각합니까? 정보는 여러 곳에서 사용되므로 정보를 최대한 가깝게 유지하고자합니다. 누구든지이 문제에 대한 좋은 해결책이 있습니까? 한 번에 조합에서 사용 할 기본 방법은 없지만

답변

0

, 당신은 예를 들어, 두 부분에서 전체 정보를 가져 오는 래퍼 클래스를 작성할 수 있습니다

class Information 
{ 
    public string UserName { get { return this.GetFromSession("UserName"); } } 
    public string WebSiteName { get { return this.GetFromCache("WebSiteName"); } } 

    private string GetFromSession(string key) 
    { /* get information from session */ } 

    private string GetFromCache(string key) 
    { /* get information from cache */} 
} 

을 그리고 당신은 할 수 다음을 사용하십시오 :

Information info = new Information(); 
Response.Write(info.UserName); 
Response.Write(info.WebSiteName); 

이 방법이 도움이됩니까?

+0

답장을 보내 주셔서 감사합니다. Tengiz! 그러나 나는 그것을 더 깊은 수준에서 필요로 할 것입니다. 페이지가있는 목록이 있으며 모든 페이지에는 각 요소에 대한 여러 정보가 포함 된 여러 요소 (목록)가 들어 있습니다. 요소의 위치 속성은 유일한 userspecific ..하지만 모든 요소를 ​​seperatly 저장하고 싶지 않아. 난 여전히 요소의 위치에 액세스 할 수있는 가능성을 갖고 싶을 때,이 솔루션과 함께 필요하지 않을까요? element.position? 캐시 된 요소 객체의 위치 특성에서 세션 객체에 액세스하는 것이 편안 할 것입니다. – eXos

+0

어쨌든 어떤 종류의 래퍼 클래스로 해결해야합니다. 나는 그 중 하나의 예를 썼지 만 구현은 사례마다 다릅니다. – Tengiz

+0

나는 세션 변수에 chached 클래스에서 액세스 할 수있는 가능성을 기대했지만, 불행히도 가능하지 않을 것 같습니다. 나는 Tengiz를 보여준 것처럼 뭔가를 구축 할 것이므로, 도와 주셔서 감사합니다! – eXos