общий объект asp.net как статический или кеш - PullRequest
0 голосов
/ 08 июля 2011

Каков наилучший способ хранения общего объекта в asp.net? Он будет вызываться несколько раз за каждый запрос. Я использовал эти два метода, но я хотел бы знать, есть ли лучший способ. Я обновляю этот объект один раз в час.

public static List<ResourceObject> SharedResources = new List<ResourceObject>()

//OR

public static List<ResourceObject> SharedResources
{
    get
    {
        List<ResourceObject> _sharedResources = HttpContext.Current.Cache["RedirectRoutes"] as List<ResourceObject>;
        if (_sharedResources == null)
        {
            _sharedResources = LoadNewSharedResource();
            HttpContext.Current.Cache["RedirectRoutes"] = _sharedResources;
        }

        return _redirectRoutes;
    }
    set
    {
        HttpContext.Current.Cache["RedirectRoutes"] = value;
    }
}

Ответы [ 2 ]

2 голосов
/ 08 июля 2011

Если ваш объект часто меняется (т. Е. Ежечасно, как вы упомянули), тогда вам лучше использовать кеш, поскольку он сможет позаботиться о сбрасывании для вас (при условии, что вы передали правильные параметры при добавлении значения вкеш).Если вы используете статическое значение, оно не будет очищаться автоматически каждый час, поэтому вам нужно будет выполнить проверку самостоятельно.

1 голос
/ 08 июля 2011

Если это, как кажется, объект, который должен сохраняться при разных запросах, то это совершенно хороший и разумный способ его достижения. Возможно, вы захотите поместить кэшированную версию в локальную переменную, если к ней обращаются несколько раз в течение одного вызова, чтобы сохранить извлечение ее из кэша каждый раз.

Есть ли какая-то особая проблема с кешированием, которая вас беспокоит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...