Есть ли способ получить доступ к кешу или сеансу из статического метода?
Как получить доступ к кешу из jQuery ajax?
Я использую jquery для проверки данных и быстрого доступа к данным. У меня есть статический веб-метод, который jquery вызывает через json для возврата значения. Я не хочу каждый раз звонить в базу данных, поэтому я хотел бы кэшировать данные, которые я нажимаю, но я не могу определить, как вызвать кеш asp.net из javascript или статический метод.
Я бы хотел отправить объект страницы до статического метода, который позволит мне получить доступ к page.cache, но не знаю, как это сделать. Запрет, возможно, способ получить доступ к кешу из самого javascript?
Ответы
Ответ 1
System.Web.HttpContext.Current.Cache
Кэш используется для каждого домена приложения - не на странице. Страница просто обладает удобством свойства Page.Cache, чтобы получить текущий кэш, что означает, что вы можете просто сделать Cache [ "key" ] из метода на странице.
Как вы заметили, если вы используете статический метод, то у вас нет экземпляра страницы, и у вас нет свойства Page.Cache. Итак, вам нужно использовать HttpContext.Cache. Но подождите - у вас нет экземпляра HttpContext! Это нормально, текущий исполняемый экземпляр хранится в статическом свойстве HttpContext.Current.
Итак - чтобы ответить на ваш вопрос - в статическом методе используйте HttpContext.Current.Cache. BTW, вы также можете получить доступ к Request и Response оттуда.
Ответ 2
Я думаю, что вызов метода PageMethod может быть лучшим, что вы действительно можете сделать, если вы действительно этого хотите:
http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/
Ответ 3
Javascript - клиентская сторона, кэш находится на стороне сервера, поэтому вам нужно выполнить обратный вызов метода в вашем приложении asp.net, который возвращает содержимое кеша.
API-интерфейс ASP.NET Cache действительно хорош, вы можете использовать Cache [ "Key" ], чтобы получить кешированный контент, который вам нравится. Подробнее здесь: http://msdn.microsoft.com/en-us/library/ms972379.aspx