Asp.net поддерживает три типа кэша.
Я хочу написать краткий технический обзор, но это может быть слишком много. Целью технического обзора является максимально быстрое и простое описание технических моментов, что, я надеюсь, также является наиболее эффективным способом распространения знаний.
1. Кэш страниц/элементов
2. Кэш уровня приложения
3. Кэш клиента браузера
С точки зрения реализации кэш страниц/элементов управления и кэш уровня приложения хранятся в памяти сервера. Поскольку памяти становится недостаточно, это содержимое может быть удалено заранее, прежде чем оно станет недействительным. (Характеристики кэша определяют, что это содержимое можно с уверенностью удалить). Кэш браузерного клиента хранится в кеше клиентского браузера. Например, временная папка IE функционирует как кеш. Каждый раз, когда пользователь запрашивает страницу, браузер сначала выполняет поиск в кеше, чтобы увидеть, есть ли в кеше содержимое, соответствующее требованиям и срок действия которого не истек, он будет читать его непосредственно из кеша и пропускать передачу по сети.
Ниже демонстрируется конкретный метод записи в Asp.net:
1. Кэш страниц/элементов управления может быть объявлен в файле aspx, ascx или в коде позади него.
<%@ OutputCache Duration="#ofсекунд"
Location="Любой | Клиент | Нижестоящий | Сервер | Нет |
ServerAndClient "
Shared="True | False"
VaryByControl="имя элемента управления"
VaryByCustom="браузер | пользовательская строка"
VaryByHeader="headers"
VaryByParam ="parametername"
CacheProfile="имя профиля кэша | ''"
NoStore="true | false"
SqlDependency="пара имен баз данных/таблиц | CommandNotification"
%>
Основные параметры:
Продолжительность: эффективное время кэширования, единицы секунды.
Общий: It допустимо только для элементов управления. Если элемент управления может быть применен к нескольким страницам одновременно, могут ли несколько страниц совместно использовать этот кеш без того, чтобы каждая страница сохраняла свой собственный кеш для этого элемента управления?
VaryByControl: Кэш изменяется с идентификатором элемента управления.
VaryByCustom: Кэш изменяется с помощью пользовательской переменной. Переменная указана здесь и должна быть реализована в Global.ascx:
общедоступная строка переопределения GetVaryByCustomString (
контекст HttpContext,
строка custom
)
. оператор Пользовательский параметр — это переменная, объявленная в OutPutcache. Различное содержимое кэша представляется путем возврата разных строковых значений для разных пользовательских параметров в этой функции.
VaryByHeader, VaryByParam и CacheProfile также устанавливают разные версии кэша.
NoStore означает, что содержимое кэша не может быть записано на другие устройства хранения, кроме памяти. Это требование для содержимого с относительно высоким уровнем безопасности.
SqlDependency связан с базой данных.
2. Кэш уровня приложения
можно получить только в коде, и его особенностью является то, что он может реализовать любую необходимую логику кэширования.
Можно получить через Page.Cache, имя класса — System.Web.Caching.Cache.
3. Кэш клиента браузера
можно получить только в выделенном коде и указать через Response.Cache, который является объектом HttpCachePolicy.
Кроме того: вы можете указать TimeSpan в качестве времени кэширования, не конвертируя его каждый раз в секунды.
public TimeSpan(длинные тики);
public TimeSpan(int часы, int минуты, int секунды);
public TimeSpan(int дни, int часы, int минуты, int секунды);
public TimeSpan(int дни, int часы, int минуты, int секунды); , int миллисекунды);
Если вы хотите, чтобы кеш сохранял один час, одну минуту и одну секунду, вы можете напрямую использовать
new TimeSpan(1,1,1)
вместо того, чтобы сначала вычислять
1 час, 1 минуту и 1 секунду = 3600. +60+1=3661 секунд, а затем передать Введите 3661 в качестве периода действия.
http://www.cnblogs.com/ThomasNet/archive/2006/11/26/573104.html