Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ASP - Кэширование данных

Кэширование данных

Когда клиенты обращаются к ASP-странице, существует два основных способа обеспечить их требуемой информацией:

  • ASP-страница может получить сведения из ресурсов сервера, например из данных, сохраненных в базе данных, или
  • ASP-страница может получить сведения внутри приложения.

Извлечение данных из ресурсов вне приложения потребует дополнительных шагов обработки и, следовательно, потребует больше времени, чем генерирование данных внутри пространства приложения.

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

Приведенный ниже сценарий представляет пример выходного кэширования. В этом примере функция getSportsListBox создает поле со списком из сохраненных данных. Поле со списком добавляется к пространству приложения, чтобы клиенты могли быстрее получить доступ к нему, чем если бы они заполняли список по индивидуально. В этом примере предполагается, что имя источника данных (DSN) "Sports" определено на сервере.

<%@ LANGUAGE=JavaScript %><HTML><BODY>

<FORM METHOD=post>

What is your favorite sport? <%= getSportsListBox() %>

<P>

<INPUT TYPE=submit>

</FORM>

</BODY>

</HTML>

<%

function getSportsListBox()

{

  SportsListBox = Application("SportsListBox")

  If (SportsListBox != null) return SportsListBox;

  crlf = String.fromCharCode(13, 10)

  SportsListBox = "<select name=Sports>" + crlf;

  SQL = "SELECT SportName FROM Sports ORDER BY SportName";

  cnnSports = Server.CreateObject("ADODB.Connection");

  cnnSports.Open("Sports", "WebUser", "WebPassword");

  rstSports = cnnSports.Execute(SQL);

  fldSportName = rstSports("SportName");

  While (!rstSports.EOF)

{    SportsListBox = SportsListBox + "  <option>" +      fldSportName + "</option>" + crlf;    rstSports.MoveNext();  }

  SportsListBox = SportsListBox + "</select>"

  Application("SportsListBox") = SportsListBox

  return SportsListBox;

}

%>

 

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

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

Выдержка из Global.asa:

<OBJECT ID=rsCustomers PROGID="ADODB.Recordset" RUNAT="Server" SCOPE="Application">

</OBJECT><!--METADATA TYPE="TypeLib" FILE = "C:\Program Files\Common Files\system\ado\msado15.dll"

-->

<%  SQL = "SELECT CompanyName, City FROM Customers"  Cnn = "DSN=AdvWorks"  rsCustomers.CursorLocation = adUseClient  rsCustomers.Open SQL, Cnn, adOpenStatic, AdLockReadOnly  rsCustomers.ActiveConnection = Nothing

  Set myCustomers = Application("rsCustomers").Clone  Set CompanyName = myCustomers("CompanyName")  Set City        = myCustomers("City")

  Do Until myCustomers.EOF%><B><%= CompanyName %></B> is located in <B><%= City %></B>.<P>

<%

    myCustomers.MoveNext

  Loop

%>

 

Файл Global.asa приложения создает набор записей и добавляет его к пространству приложения. ASP-сценарий затем заполняет набор записей, делает его не требующим подключения, установив свойство ActiveConnection в Nothing. Затем ASP-сценарий размножает это набор записей и перебирает его значения, что происходит быстрее доступа к базе данных. Этот прием применим, если известно, что данные, которыми будет наполняться набор записей, относительно постоянны.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог