Рекомендуется: хорошо использовать картирование URL ASP.NET 2.0 Введение: картирование URL - это новая функция, представленная в ASP.NET 2.0. Технология картирования URL помогает нам составить определенный URL -адрес с другим URL. Чтобы помочь понять, давайте предположим, что у вас есть страница под названием HomePage.aspx на сайте для доступа к домашней странице, и все пользователи также используют ее
9.3.5 Кэш данныхПрежде всего, важно отметить, что, хотя кэш и кэш набора данных и кэш записей используется для повышения производительности, оба не имеют значения. Кэш данных - это временная область хранения данных, которая позволяет использовать данные в кэше вместо восстановления новых данных. Это относится только к данным, которые не часто изменяются, но доступно несколько раз.
Одним из самых простых способов кэширования данных в ASP является использование переменных приложений и всего сеанса. Например, предположим, что есть некоторые веб -страницы, которые должны выбрать тип книги. При нормальных обстоятельствах может быть создан файл включения со следующими функциями.
<%
Функция книжных книг ()
Dim rsbooktypes
Dim Strquote
strquote = chr (34)
Установить rsbooktypes = server.createObject (adodb.recordset)
'Получите типы книг
rsbooktypes.open usp_booktypes, strconn
Response.write <select name = & strquote & lstbooktype & strquote &>
В то время как не rsbooktypes.eof
Response.write & <ploic> & rsbooktypes (type) и </option>
rsbooktypes.movenext
Венд
Response.write & </select>
rsbooktypes.close
Установить rsbooktypes = ничего
Конечная функция
%>
Это просто вызывает хранимую процедуру, чтобы получить тип книги при создании списка выбора. Недостатком приведенного выше кода является то, что каждый раз, когда вызовут функцию, доступ к базе данных. Следовательно, повторно модифицируйте эту функцию.
<%
Функция книжных книг ()
Dim rsbooktypes
Dim Strquote
Dim Strlist
'Посмотрите, находится ли список в кэше
STRILST = приложение (Booktypes)
Если strlist = then
'Не кэшируется, так что создайте список и кэшируйте его
strquote = chr (34)
Установить rsbooktypes = server.createObject (adodb.recordset)
'Получите типы книг
rsbooktypes.open usp_booktypes, strconn
strlist = <select name = & strquote & lstbooktype & strquote &>
В то время как не rsbooktypes.eof
strList = strlist & <ploic> & rsbooktypes (type) и </option>
rsbooktypes.movenext
Венд
strlist = strlist & </select>
rsbooktypes.close
Установить rsbooktypes = ничего
'Проверьте список
Приложение (Booktypes) = strlist
Конец, если
Booktypes = strlist
Конечная функция
%>
Этот код не только открывает набор записей, он проверяет, пусто ли значение переменной приложения Booktype. Если не пусто, то используется содержимое переменной. Если пуст, набор записей открывается, как и раньше. Очевидно, что после того, как первый человек запустит эту рутину, данные кэшируются, поэтому это полезно только для тех данных, которые не часто меняются.
Если вы хотите кэшировать данные на пользовательской основе, вы можете использовать переменные в области сеанса, но вы должны отметить, что у сеанса есть дата истечения срока действия. После истечения срока действия переменная уровня сеанса будет отменена вместе с сеансом, а код может завершить запуск.
Используя инструмент напряжения веб-приложения (был), были получены результаты анализа в таблице 9-4:
Таблица 9-4 Результаты анализа, полученные с использованием инструментов
метод
Страница нажимает
Нет кеша
190
Иметь кеш
11000
Очевидно, что производительность улучшилась. Но не используйте приведенный выше метод, чтобы кэшировать все. В конце концов, этот подход применим только к данным, которые были отформатированы для отображения. Кроме того, учитывайте, что если веб -сервер обслуживает только конкретного человека, это вряд ли это типичное использование веб -сервера. Использование было позволяет моделировать несколько пользователей на одном сервере, что позволяет вам более реалистично проверять ваше приложение.
Моделируя определенное количество пользователей, инструмент напряжения веб -приложений может проверить толерантность к веб -страницам. Инструмент имеет простой графический интерфейс, который очень прост в использовании. Более подробную информацию можно получить с http://homer.rte.microsoft.com/ или загрузить инструмент.
Кэш -объекты
Что мне делать, если я хочу кэшировать неформатированные данные? Можно ли использовать его по -разному в разных местах? Конечно, вы также можете сделать это с переменными приложения или сеанса. Рассмотрим название книги. Возможно, вы захотите использовать этот заголовок на нескольких страницах, возможно, отобразите все названия в одной таблице или отобразить их в блоке списка для пользователей, чтобы выбрать, и т. Д. Вы можете подумать о кэшировании самого набора записей без необходимости кэшировать текст HTML с тегами.
Объекты могут быть кэшированы в переменных приложения или сеанса, но есть два основных вопроса, на которые следует обратить внимание:
· Объекты, хранящиеся в переменных приложения, должны поддерживать бесплатные потоки, поэтому они должны быть бесплатными объектами потока или объектами с двойным потоком. Это означает, что компоненты, созданные VB, не могут быть кэшированы в переменной приложения.
· Хранение объекта потока модуля в состоянии сеанса означает, что поток, который создал объект, является единственным потоком, который позволяет к нему доступ. Следовательно, IIS не может выполнить управление потоком лучше, потому что любая страница, пытающаяся получить доступ к этому объекту, должна ждать исходного потока, чтобы обслуживать страницу. Это убьет любой шанс продлить заявку.
Для обсуждения проблем с потоком см. В главе 15.
По умолчанию ADO загружается как объект потока модуля, в основном потому, что некоторые поставщики OLE DB не являются потоковыми. В каталоге установки ADO есть файл реестра, который преобразует ADO в двухпоточную модель, что позволяет безопасно хранить объекты ADO в объектах приложения и сеанса.
Вы можете подумать, что все проблемы решаются, и значительное увеличение скорости может быть достигнуто с помощью различных типов объектов, но это не обязательно так. Многие поняли, что, поскольку подключение к базе данных является относительно дорогой операцией, объекты кэширования соединения могут сэкономить много времени при снова подключении. Это правда, но кэширование объекта соединения означает, что соединение никогда не будет закрыто, поэтому пул кеша соединения является относительно неэффективным. Одна идея, которая подключается к пулам кэша, - это фактически уменьшить ресурсы, используемые на сервере, и кэширование объектов в состоянии ASP, очевидно, не может уменьшить использование ресурсов. Фактически, они также увеличиваются, потому что каждый кэш объектов занимает ресурсы сервера, что значительно снизит эффективность веб -сервера для занятого сайта.
Таким образом, объекты подключения не должны храниться, но как насчет объектов записи, особенно отключенных Recordsets? Предполагая, что ADO изменилась с единичного потока на двойной поток, нет никаких причин не делать этого, если вы точно знаете, что делаете. Не думайте, что это автоматически улучшит производительность страниц ASP. Каждый набор кэшированной записи занимает ресурсы сервера с точки зрения памяти и управления ASP, поэтому не кэшируйте большие наборы записей.
Поделиться: ASP Читать и написать таблицу регистрации Пример: Ниже приведен указанный контент: <%dim readcomputername set readcomputername = createObject (wscript.shell) Dim Computername, Reg