Прошло 7 лет с момента выпуска ASP, и использование технологии ASP стало достаточно зрелым. С тех пор, как Microsoft запустила ASP.NET, она постепенно перестала обновлять версию ASP. Но поскольку многие люди все еще привыкли использовать ASP для разработки веб-сайтов, я еще раз приведу простой пример, чтобы проиллюстрировать, как использовать Cache в ASP.
Проще говоря, основной принцип использования Cache заключается в хранении в памяти часто необходимых и дорогостоящих данных в течение определенного периода времени, чтобы к этим данным можно было получить прямой и глобальный доступ. Например, есть некоторые данные, которые необходимо запросить из нескольких таблиц в базе данных, и почти каждая страница должна вызывать эти данные. Лучшая реализация в этом случае — кэшировать эту часть данных. Простая реализация в ASP — инкапсулировать окончательную форму выражения этих данных (например, поток HTML) в строку и затем сохранить ее во встроенном объекте ASP. Приложение (в этой статье в основном обсуждается динамический кэш, а простые приложения ASP будут опущены). Преимущество этого заключается в том, что этот HTML-код можно вызывать глобально по всему веб-сайту, а приложение хранится в памяти, поэтому нет необходимости запрашивать базу данных, что ускоряет время ответа и экономит нагрузку на сервер. Конечно, это происходит за счет потребления памяти и является типичным примером обмена пространства на время.
Хотя использование этого метода имеет множество преимуществ, при часто меняющихся источниках данных (базах данных) этот метод может оказаться неприменимым, поскольку объект ASP Application имеет недостаток, то есть он не может автоматически изменяться при изменении источника данных. . изменить или контролировать интервал обновления. Поэтому разработчикам необходимо программировать реализацию динамического кэша. Конечно, во время разработки программы Приложение может обновляться каждый раз при изменении источника данных (базы данных). Таким образом, источник данных (база данных) всегда согласован. При программировании придется учитывать больше вопросов, и детали легко упустить. Поэтому я не рекомендую этот метод, за исключением особых ситуаций.
Я думаю, что лучший способ в ASP — это использовать программирование для регулярного обновления кэша, что означает установку срока действия данных, хранящихся в приложении. Конечно, объект Application в ASP не имеет такого атрибута ExpireTime. Это необходимо реализовать программно.
Код
ASP: default.asp
< %@Language=VBScript% >
<%Явный вариант%>
<%Response.Buffer=True%>
<!--#include file = "conn.asp"-->
<!--#include file = "GetCache.asp"-->
<HTML>
<ГОЛОВКА>
<TITLE>Демонстрация кэша ASP</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
</HEAD>
<ТЕЛО>
<h4>Обновлять кеш каждые 10 секунд:</h4>
<%
ответ.Flush
ПолучитьHTMLStream
ответ.Написать
HTMLStream
%>
</тело>
</html>
ASP:getcache.asp
<%
Const CACHE_DEFAULT_INTERVAL = 30 'Обновление кэша каждые 30 секунд.
Тусклый HTML-поток
DimIsExpires
IsExpires = Срок действия кэша
ФункцияCacheExpires
Дим стрластапдате
Тусклый результат strLastUpdate = Приложение("LastUpdate")
Если (strLastUpdate = "") Или (CACHE_DEFAULT_INTERVAL < DateDiff("s", strLastUpdate, Now)) Тогда
результат = правда
Сетластупдатитетиме
Еще
результат = ложь
Конец, если
CacheExpires = результат
Конечная функция
Sub SetLastUpdateTime
Приложение.Блокировка
Приложение("LastUpdate") = CStr(сейчас())
Приложение.Разблокировать
Завершить
подписку GetHTMLStream
Если Истекает Тогда
ОбновлениеHTMLStream
Конец, если
HTMLStream=Приложение("CACHE_HTMLStream")
Завершить
обновление подзаголовкаHTMLStream
тусклый д
d = FetchHTMLStream
Приложение.Блокировка
Приложение("CACHE_HTMLStream") = d
Приложение.Разблокировать
Завершить
подфункцию FetchHTMLStream
Dim rs, strSQL, strHTML
Set rs = CreateObject("ADODB.Recordset")
strSQL = "выбрать идентификатор категории, имя категории из категорий"
rs.Open strSQL, strConn, adOpenForwardOnly, adLockReadOnly
strHTML = strHTML & "<select name=""slt_search"">"
пока (не rs.EOF)
strHTML = strHTML & "<опция>"
strHTML = strHTML & rs.Fields("имя категории")
strHTML = strHTML & "</option>" rs.MoveNext
идти
стрHTML = стрHTML & "</select>"
rs.Close
Setrs=Ничего
FetchHTMLStream = стрHTML
Конечная функция
%>
ASP: conn.asp
<!--METADATA NAME="Библиотека объектов данных Microsoft ActiveX 2.5" TYPE="TypeLib" UUID="{00000205-0000-0010-8000-00AA006D2EA4}"-->
<%
дим стрконн
strConn = "Provider=SQLOLEDB.1;Встроенная безопасность=SSPI;Постоянная информация о безопасности=False;Начальный каталог=Борей"
%>