программный код
<%
' автор xilou, www.chinacms.org, 20090115
'Последнее обновление: 20090115
'Запись о модификации: нет
CONST CACHEPREFIX = "CACHE_" 'Префикс кэша, не может быть пустым
' Описание:
' 1. Формат кэша: Application(CACHEPREFIX & key) = array("ключ кэша", "время кэширования", "содержимое кэша", "описание кэша", "срок действия").
'2, ключ кэша не чувствителен к регистру
'Добавить кеш без проверки его существования. Если он существует, это эквивалентно обновлению кеша.
'varAry: параметр, формат: array("ключ кэша", "время кэширования", "содержимое кэша", "описание кэша")
'Ключ кэша: тот же формат, что и в application()
'Время кэширования: единицы секунды, может быть отрицательным числом, указывающим на немедленный срок действия, может быть пустым, пустым или не числом, срок действия по умолчанию - 20 минут.
'Содержимое кэша: данные кэша, кэширование объектов не поддерживается
'Описание кэша: описание кэша
Функция AddCache(varAry)
Дим c,ари(4)
Если Не IsArray(varAry) Тогда
Response.Write «Ошибка: ошибка параметра AddCache(varAry), параметр не является массивом»
Ответ.Конец()
Конец, если
Если UBound(varAry) <> 3 Тогда
Response.Write «Ошибка: ошибка параметра AddCache(varAry), ошибка длины массива»
Ответ.Конец()
Конец, если
Если varAry(0) = "" Тогда
Response.Write «Ошибка: ошибка AddCache(varAry), ключ не может быть пустым»
Ответ.Конец()
Конец, если
Если varAry(1) = "" или Not IsNumeric(varAry(1)) Тогда varAry(1) = 1200
Приложение.Lock()
Приложение(CACHEPREFIX & varAry(0)) = array(varAry(0),varAry(1),varAry(2),varAry(3),DateAdd("s",varAry(1),Now()))
Приложение.UnLock()
Конечная функция
'Проверяем, существует ли кеш, возвращаем True, если он существует, в противном случае возвращаем False
'ключ: ключ кэша
Функция CheckCache(ключ)
Дим к
Для каждого k в приложении. Содержание
Если LCase(k) = LCase(CACHEPREFIX & key), то CheckCache = True: выход из функции
Следующий
ЧекКэш = Ложь
Конечная функция
'Получить кеш
'Возвращаем массив в формате: array("ключ кэша", "время кэширования", "содержимое кэша", "описание кэша", "срок действия", истек ли он, True|False)
'Если он не существует, произойдет ошибка, поэтому проверьте с помощью CheckCache(key) перед его получением.
Функция GetCache (ключ)
Приложение Dim, isExp
приложение = Приложение (CACHEPREFIX и ключ)
isExp = Ложь
Если DateDiff("s",Now(),app(4)) <= 0 Тогда isExp = True
GetCache = Array(приложение(0),приложение(1),приложение(2),приложение(3),приложение(4),isExp)
Конечная функция
'Очистить кеш
Функция RemoveCache (ключ)
Приложение.Lock()
Application.Contents.Remove(CACHEPREFIX и ключ)
Приложение.UnLock()
Конечная функция
'Обновите кеш. Если кеш не существует, возникнет ошибка, поэтому перед обновлением проверьте с помощью CheckCache(key).
'varAry: параметр, формат: array("ключ кэша", "время кэширования", "содержимое кэша", "описание кэша")
'Ключ кэша: тот же формат, что и в application()
'Время кэширования: единицы секунды, может быть отрицательным числом, указывающим на немедленный срок действия, может быть пустым, пустым или не числом, срок действия по умолчанию - 20 минут.
'Содержимое кэша: данные кэша, кэширование объектов не поддерживается
'Описание кэша: описание кэша
'Примечание. Если вы не обновляете определенное значение varAry, просто установите для него значение null.
' Например, UpdateCache(array("key",null,"content",null)), что означает, что время истечения срока действия и описание не будут обновляться.
Функция UpdateCache(varAry)
Приложение Dim
приложение = GetCache(varAry(0))
Если Not IsNull(varAry(1)) Тогда app(1) = varAry(1)
Если не IsNull(varAry(2)) Тогда app(2) = varAry(2)
Если Not IsNull(varAry(3)) Тогда app(3) = varAry(3)
Если приложение(1) = "" или Not IsNumeric(app(1)) Тогда приложение(1) = 1200
Приложение.Lock()
Приложение (CACHEPREFIX & приложение (0)) = массив (приложение (0), приложение (1), приложение (2), приложение (3), DateAdd («s», приложение (1), сейчас ()))
Приложение.UnLock()
Конечная функция
'www.downcodes.com
'Печать кэша для отладки
Функция PrintCache (ключ)
Приложение Dim, я, т
Если CheckCache(ключ) Тогда
приложение = GetCache (ключ)
Response.Write "<pre>{"&chr(10)
Response.Запишите chr(32) & "имя кэша" & chr(32) & ":" & chr(32) & CACHEPREFIX & app(0) & chr(10)
Response.Запишите chr(32) & "ключ кэша" & chr(32) & ":" & chr(32) & app(0) & chr(10)
Response.Запишите chr(32) & "время кэширования" & chr(32) & ":" & chr(32) & app(1) & chr(10)
Ответ. Напишите chr(32) & «Время истечения срока действия» & chr(32) & «:» & chr(32) & app(4) & chr(10).
Ответ. Напишите chr(32) & «Это срок?» & chr(32) & «:» & chr(32) & app(5) & chr(10)
Ответ. Напишите chr(32) & "описание кэша" & chr(32) & ":" & chr(32) & app(3) & chr(10).
'содержание
Response.Запишите chr(32) & "кэшированное содержимое" & chr(32) & ":" & chr(32)
т = VarType(приложение(2))
Если InStr(",0,1,2,3,4,5,6,7,8,11,",","&t&",") > 0 Тогда
Приложение Response.Write(2)
Еще
Response.Write TypeName(приложение(2))
Конец, если
Ответ. Напишите chr(10)
Response. Напишите "</pre>"&chr(10)
Еще
Ответ.Пишем "Кэш не существует"
Конец, если
Конечная функция
'----------демо
Sub br(str)
Response.Write str & "<br />" & vbcrlf
Конец субтитра
'RemoveCache "xilou"
'AddCache Array("xilou","",array("содержимое данных"),"описание кэша")
br CheckCache("xilou")
PrintCache "xilou"
Приложение Dim
Если CheckCache("xilou") Тогда
app = GetCache("xilou") 'Получить
Массив UpdateCache (приложение (0), null, «testsfsfsf», null) 'Обновить
Еще
Массив AddCache("xilou","","content","description")
Конец, если
'Дим к
'Для каждого k в Application.Contents
'Бр к
'Следующий
%>