会话变量与局部变量

Mat*_*ing 8 c# asp.net

每当我必须在会话中存储任何内容时,我就会习惯通过这样的方式尽可能减少访问会话的次数:

private List<SearchResult> searchResults;

private List<JobSearchResult> SearchResults
    {
        get
        {
            return searchResults ?? (searchResults = Session["SearchResults"] as List<SearchResult>);
        }

        set
        {
            searchResults = value;
            Session["SearchResults"] = value;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的理由是,如果在回发期间多次使用该对象,则必须不经常从Session中检索该对象.但是,我完全不知道这在性能方面是否真的有帮助,或者实际上只是浪费时间,甚至可能是一个坏主意.有没有人知道如何将计算成本高昂的不断拉出会话的对象与上述方法进行比较?或者,如果有任何最佳实践?

Sir*_*ver 3

取决于您使用的会话存储类型(有关详细信息,请参阅:此处)。

如果您使用 InProc 存储,那么性能差异可能很小,除非您非常频繁地访问对象。然而,本地副本实际上并没有什么坏处。