Совет первый: повысить эффективность использования коллекции запросов
. Доступ к коллекции ASP для извлечения значения — это трудоемкий и ресурсоемкий процесс. Поскольку эта операция включает в себя серию поисков по связанным коллекциям, она выполняется намного медленнее, чем доступ к локальной переменной. Поэтому, если вы планируете использовать значение из коллекции Request несколько раз на странице, вам следует рассмотреть возможность сохранения его как локальной переменной. Например, чтобы ускорить обработку скриптового механизма, напишите код в следующей форме:
strTitle=Request.Form("Title")
strFirstName=Запрос.Форма("Имя")
strLastName=Запрос.Форма("Фамилия")
Если Len(strTitle) Тогда strTitle=strTitle & " "
Если strFirstName="" Тогда strFullName=strTitle & " " & strLastName
Иначе если Len(strFirstName)=1 Тогда
strFullName=strTitle & strFirstName & "." & strLastName
Еще
strFullName=strTitle & strFirstName & " " & strLastName
Конец, если
??Совет 2. Получите прямой доступ к соответствующей коллекции
. ??Если у вас нет выбора, не используйте strPage=Request("page") для получения параметров, так как при этом будет выполняться поиск по всем коллекциям по порядку: QueryString, Form, Cookies, ClientCertificate, ServerVarible до тех пор, пока не будет найдено имя первого соответствующего значения. Это менее эффективно, чем прямой доступ к соответствующей коллекции, и небезопасно, если нет абсолютной гарантии, что значение не появится в другой коллекции.
Например, вам может потребоваться найти имя веб-сервера, который выполняет запрос клиента. Это достигается путем поиска «SERVER_NAME» в коллекции Request.ServerVarables, которая появляется в каждом запросе. Однако если другие коллекции также содержат значения с именем «SERVER_NAME» (имена ключей не чувствительны к регистру), вы получите неправильные результаты при использовании Request(»server_Name»). Таким образом, по возможности, к соответствующей коллекции следует обращаться напрямую.
?? Совет 3. Используйте свойство Response.IsClientConnected перед трудоемкими операциями.
?? Использование Response.IsClientConnected — полезный способ проверить, подключен ли пользователь к серверу и загружает ли веб-страницу, созданную ASP. Если пользователь отключается или прекращает загрузку, нам больше не придется тратить ресурсы сервера на создание веб-страницы, поскольку содержимое буфера будет удалено IIS. Итак, для страниц, на расчет которых требуется много времени или которые используют много ресурсов, стоит на каждом этапе проверять, находится ли посетитель в автономном режиме:
… Код для создания первой части страницы
Если Response.IsClientConnected Тогда
Ответ.Flush
Еще
Ответ.Конец
Конец, если
...... Код для создания следующей части страницы
?? Совет 4. Оптимизируйте операции ADO в ASP
?? Вообще говоря, данные составляют фактическое содержимое веб-сайта. Поэтому очень полезно оптимизировать операции ADO, чтобы ускорить выполнение кода ASP:
??a. Выберите только необходимые столбцы. При открытии набора записей ADO не следует автоматически использовать имя таблицы (т. е. SELECT *), если только вам не нужно получить все столбцы. Использование отдельных столбцов означает, что объем данных, отправляемых на сервер или получаемых с него, уменьшается. Даже если вам нужно использовать все столбцы, присвоение имени каждому столбцу по отдельности обеспечит наилучшую производительность, поскольку серверу не нужно интерпретировать имена столбцов.
??b. Используйте хранимые процедуры как можно чаще. Хранимые процедуры — это предварительно скомпилированные программы, содержащие подготовленный план выполнения, поэтому они выполняются быстрее, чем операторы SQL.
??c. Используйте соответствующие шаблоны курсора и блокировки. Если все, что вам нужно сделать, это прочитать данные из набора записей и отобразить их на экране, тогда используйте набор записей по умолчанию, предназначенный только для пересылки и только для чтения. Чем меньше работы ADO приходится выполнять для сохранения сведений о записях и блокировках, тем выше производительность.
??d. Используйте переменные объекта. Верный способ повысить производительность при переборе набора записей — использовать объектные переменные, указывающие на члены коллекции. Например:
Пока не RsGc.EOF
Response.Write "Имя проекта:" & RsGc("GcMC") & "(Код проекта: " & RsGc("GcCode") & ")
"
RsGc.MoveNext
Для ускорения выполнения
Wend
можно переписать в виде следующего кода:set GcMc=RsGc("GcMc")
set GcCode=RsGc("GcCode")
Пока это не rsGc.EOF Response.Write "Имя проекта: " & GcMc & " (Код проекта: " & GcCode & ")
" RsGc.MoveNext
Wend
?? Новый код устанавливает ссылку на объектную переменную, поэтому объектную переменную можно использовать вместо фактической переменной, что означает, что механизму сценария требуется меньше работы, поскольку в коллекции меньше индексов.
??Совет 5. Не смешивайте скриптовые движки
. Мы знаем, что на страницах ASP можно использовать как VBScript, так и JScript. Но не рекомендуется одновременно использовать JScript и VBScript на одной странице. Поскольку сервер должен создать экземпляр и попытаться кэшировать два (а не один) механизма сценариев, это в некоторой степени увеличивает нагрузку на систему. Поэтому из соображений производительности не следует смешивать несколько механизмов сценариев на одной странице.