Asp компонент browser capabilities


Содержание

Asp компонент browser capabilities

Tue, 14 Dec 2004 10:00:00 GMT

Web applications are different from applications that run in homogenous environments because they send their output to all kinds of platforms and Web browsers.Some browsers support client-side scripting, some support XHTML, and still others have limited screen real estate.

The ASP Column — What’s in ASP.NET Config Files?

Tue, 17 Aug 2004 10:00:00 GMT

Even though you’ve been using ASP. NET for a while, how much do you really know about ASP. NET configuration files? While you’ve probably touched the Web. config file from time to time, there are some nuances involved in configuring ASP.

The ASP Column — Using SOAP Extensions in ASP.NET

Tue, 17 Feb 2004 10:00:00 GMT

The ASP Column — Web Services: ATL Server Versus ASP.NET

Tue, 13 Jan 2004 10:00:00 GMT

The ASP Column — ATL Server Versus ASP.NET

Tue, 14 Oct 2003 10:00:00 GMT

The ASP Column — The Internet Explorer Toolbar Control

Tue, 12 Aug 2003 10:00:00 GMT

The ASP Column — Tree Controls with XSL

Tue, 13 May 2003 10:00:00 GMT

Manipulating the TreeView server-side control is very much like programming any other ASP.NET server-side control. There are a number of properties, methods, and events that are available both programmatically and through the designer. Find out how to take advantage of it.

The ASP Column — Using the Internet Explorer WebControls

Tue, 14 Jan 2003 10:00:00 GMT

During the lifespan of ASP, there have been many technologies developed for making browser-based user interface development easier.For example, during the early days of classic ASP development, keeping a browser-based UI consistent required many conditional statements into the ASP script.

The ASP Column — Deploying an ASP.NET App Using Visual Studio .NET

Tue, 15 Oct 2002 10:00:00 GMT

When Visual StudioВ® . NET was released back in February 2002, it included a number of new features that made it easier to create Web applications.The MicrosoftВ® . NET Framework includes classes for intercepting and processing HTTP requests, and Visual Studio .

The ASP Column — Code-behind in ASPX Files

Tue, 16 Jul 2002 10:00:00 GMT

The ASP Column — HTTP Modules

Tue, 16 Apr 2002 10:00:00 GMT

IIS 6.0 — New Features Improve Your Web Server’s Performance, Reliability, and Scalability

Tue, 12 Feb 2002 10:00:00 GMT

As the Web evolves, so does the role that Internet servers play. The Internet has seen the growth of e-commerce, B2B business, collaboration, streaming and other new media, and these new applications require new features to meet increasingly complex needs. Microsoft Internet Information Services (IIS) has many of the features today’s mature Web sites need. This article outlines the features in the upcoming version 6.0 and discusses how they promote better scalability, reliability, and performance. Features such as Remote administration, caching, and metabase improvements, as well as custom isolation and security enhancements, make IIS 6.0 the Web server of the future.

The ASP Column — DataList vs. DataGrid in ASP.NET

Tue, 13 Nov 2001 10:00:00 GMT

The ASP Column — HTMLControls and WebControls in ASP.NET

Tue, 14 Aug 2001 10:00:00 GMT

The ASP Column — ASP.NET Connection Model and Writing Custom HTTP Handler/Response Objects

Tue, 12 Jun 2001 10:00:00 GMT

Visual Programmer — Advanced ASP.NET Server-side Controls, Part 2

Tue, 13 Feb 2001 10:00:00 GMT

Visual Programmer — Advanced ASP.NET Server-side Controls

Tue, 12 Dec 2000 10:00:00 GMT

Visual Programmer — Server-side Controls in Active Server Pages+

Tue, 12 Sep 2000 10:00:00 GMT

Visual Programmer — Writing ActiveX Controls in Visual Basic versus Visual C++

Tue, 18 Jul 2000 10:00:00 GMT

Visual Programmer — Add Scripting to Your Apps with Microsoft ScriptControl

Tue, 16 May 2000 10:00:00 GMT

Which Framework Should You Use? — Building ActiveX Controls with ATL and MFC

Tue, 14 Mar 2000 10:00:00 GMT

Currently MFC and ATL represent two frameworks targeted at different types of Windows-based development. MFC represents a simple and consistent means of creating standalone apps for Windows; ATL provides a framework to implement the boilerplate code necessary to create COM clients and servers. The two frameworks overlap in their usefulness for developing ActiveX controls. We’ll take a look at both frameworks as they apply to creating ActiveX controls-highlighting strengths and weaknesses, and walking through the process of creating a control-so you can determine when you might want to use one framework or the other.

Asp компонент browser capabilities

I have installed all the latest frameworks. Currently 4.5.1 with all rollups. Still there is no correct capability detection for IE 11.

It works fine for me to add my own capabiltiy detection configuration in C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers and register a new factory dll using aspnet_regbrowsers.exe utillity.

The prefered way is however to activate application local browser detection using the App_Browsers ASP.NET folder. This is simply not working for me. No matter if I just launch my app from Visual Studio 2013 using IIS Express, or after publishing the site (all ok, with app_browsers folder) to my local IIS 7 (i’m running on Windows 7 Pro x64 SP1. This way, for ex. the Request.Browser.Id returns «internetexplorer» and therefore also wrong capabilities.

Overall I could find very very litle details, explaining the inner workings of these teqniques in .NET Framework, ASP.NET and Visual Studio, to better grasp whats really going wrong. On some sites it states that IIS should autmatically picking upp the contents from App_Browsers folder if it exists. Ignoring any machine wide capability definition, that already exists in the app_browsers folder.

Answers

I have now created a new thread here.

  • Marked as answer by Jack Zhai-MSFT Microsoft contingent staff, Moderator Wednesday, April 9, 2014 6:41 AM

All replies

I have installed all the latest frameworks. Currently 4.5.1 with all rollups. Still there is no correct capability detection for IE 11.

Asp компонент browser capabilities

Browser Capabilities Component is a web based tutorial in which users can gather idea about browser type object which is created by the browser capability component for collecting information about client side web browser. This component sends HTTP header, whenever a browser links to the web server, this browser type object detects the browser information of the client.

ASP.NET Tutorial Detect Browser Capabilities is an article in which author elaborates the procedure for detecting the visitors browser activities with the help of ASP.NET application. Here the author explains various class of HttpRequest.Browser.


Detecting Browser Capabilities in ASP.NET is a web based article in which author elaborates the method of detecting the browser capabiltity with the help of HttpBrowserCapabilities properties. In this tutorial users can learn about various.

Displaying Browser Capabilities in ASP.NET is a web based tutorial in which author describes the method of detecting browser capability in ASP.NET. Here the author explains each properties of HttpBrowserCapabilities object, which helps in.

HTTP Browser Capabilities with ASP.NET is a web based tutorial in which author explains the process of accessing and reading the visitors browsers capabilitity in ASP.NET. Here the author offers source code which executes the process of accessing.

Detecting Browser Capabilities is a web based tutorial in which author describes the method of collecting the browser information of the visitors. Here the author demonstrates detecting the browser capability and the method of accessing the.

This is an ASP based networking component that allows web users to search for registrant name for the given domain name. It retrieves those data like, registrant name, their address and email address from whois server. This whois lookup will.

This is an ASP based network component that allows network administrators or any web users who want to send and access web pages or document of HTTP via global network or through local network. It also allows them to use custom HTTP headers and.

Easy to use, ASP file upload component with progress bar indicator. Upload multiple files with size up to 2GB.

AdvZip is an ASP based compression component that provides all the functionalties for zipping and unzipping the files for all applications. This component provides various features like compressing and decompressing the files and folder, to add a.

This is an ASP.NET based component and it is an useful database tool for the users that allows them to repair the data which have error on MS Access database records. It has password protection facility for full security. Users can easily extract.

This is an ASP based network component which is used to send for DNS lookups and for traceroute. DNS lookup is used to lookup hostname using IP address and to lookup IP address using host name. Traceroute is used to deliver ICMP request to the.

PowerTCP Zip is an ASP based zip component that provide various functionalities for zipping and unzipping the files with single line of code. It has file store object which helps in transferring datas from the memory buffer to the zipping files.

jsoop (Javascript Object Oriented Programming) is a cross-browser javascript component library targeting Microsoft Internet Explorer and Mozilla. It’s inheritance tree includes basic HTML components, alignment, serialization, fieldbinding.

ASP Mail Component is ActiveX component designed to allow e-mail sending from Active Server Pages (ASP). With this component installed you can send simple text E-mail message as well as HTML e-mail with attachments and multiple recipients. Other.

For CGI application: The TBrowserType component will determine browser capabilities (Tables, JavaScript etc.) based on the UserAgent HTTP header. Compatible with the BROWSCAP.INI distributed with Microsoft’s ASP.

Webmasters can utilize this component to perform some operations on the files uploaded from a remote web browser. This component has been designed efficiently to work with the ASP applications. This component highly benefits the website owners and.

The ASPNetVideo Component Suite allows you to add video files and streaming media into your ASP.Net web forms. ASPNetVideo is unique in that:

The first commercial-grade ASP.NET component to embed Windows Media Player, QuickTime and.

ASP Thumb is Macintosh compatible. ASP Thumb is an ASP component that allows ASP application to create high-quality thumbnails. You can use this component for automated creation of image previews in your ASP applications. The component can scale.

BuilderEditor is a powerful and easy to use ASP.NET RAD component for maintaining a datasource (e.g. SQL database, dataset). It allows you to add, edit, delete and display data from a data source. It generates the data entry forms used to insert.

All files and free downloads are copyright of their respective owners. We do not provide any hacked, cracked, illegal, pirated version of scripts, codes, components downloads. All files are downloaded from the publishers website, our file servers or download mirrors. Always Virus check files downloaded from the web specially zip, rar, exe, trial, full versions etc. Download links from rapidshare, depositfiles, megaupload etc not published.

Browser Capabilities Component

The Browser Capabilities component creates a BrowserType object that provides your scripts with a description of the capabilities of the client’s Web browser.

When a browser connects to the Web server, it automatically sends an HTTP User Agent header. This header is an ASCII string that identifies the browser and its version number. The BrowserType object compares the header to entries in the Browscap.ini file.

If it finds a match, the BrowserType object assumes the properties of the browser listing that matched the User Agent header.

If the object does not find a match for the header in the Browscap.ini file, it searches for the closest match using the * and ? wildcards. If a match can not be found using wildcards, the object will use the default browser settings if they have been specified in the Browscap.ini file. If the object does not find a match and default browser settings have not been specified in the Browscap.ini file, the object sets every property to the string «UNKNOWN.»

You can add properties or new browser definitions to this component simply by updating the Browscap.ini file.

File Names

Browscap.dll The Browser Capabilities component.
Browscap.ini File A text file that maps browser capabilities to the HTTP User Agent header. This file must be in the same directory as Browscap.dll.

Syntax

Set BrowserType = Server.CreateObject(«MSWC.BrowserType»)

Parameters

Example

The following example uses the BrowserType object to display a table showing some of the capabilities of the current browser.

ColdFusion и Active Server Pages

Относительно недавно на смену статическим Web-страницам стали приходить динамические — то есть страницы, содержимое которых формируется в зависимости от действий пользователя. Соответственно, потребовался и новый класс приложений, способных формировать такие страницы. Эти приложения, получившие уже достаточно широкое распространение, получили название серверов Web-приложений. Существует довольно много способов реализации таких серверов. Это может быть самостоятельный продукт, объединяющий в себе функции как сервера Web-приложений, так и обычного Web (HTTP)-сервера. Также это может быть функциональное расширение существующего Web-сервера, основанное на использовании его программных интерфейсов, либо продукт, работающий совместно с Web-сервером другой фирмы. К последним двум типам относятся, соответственно, Active Server Pages (ASP) фирмы Microsoft — технология, расширяющая функциональность Web-сервера Microsoft Internet Information Server (IIS), и ColdFusion фирмы Allaire — самостоятельный продукт, работающий совместно с различными Web-серверами других фирм.

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

Active Server Pages

Active Server Pages — это технология фирмы Microsoft для создания Web-приложений на базе сервера Microsoft Internet Information Server (IIS), работающего под управлением Windows. IIS поставляется в составе Windows NT Option Pack (для Windows 95, Windows NT 4.0 Workstation и Windows NT 4.0 Server). Младший вариант IIS — Personal Web Server входит в состав Windows 98. Помимо IIS, встроенная поддержка ASP (правда, только версии 1.0) есть у сервера WebSite Professional фирмы O’Relly. Поддержка других серверов (Windows NT) и платформ (Unix) возможна при использовании продукта Chili!ASP 1.2 фирмы Chili!Soft. При этом ASP-приложения могут работать под управлением Lotus Domino Go 4.6 и 5.0, Netscape Enterprise 3.0 и 3.51 и Netscape FastTrack 3.0 на платформе Windows и Netscape Enterprise и 3.51 и Netscape FastTrack 3.01 на платформе Unix под управлением Sun Solaris 2.51 и 2.6.

В состав Windows 2000 (планируемый срок выхода — второе полугодие 1999 года) войдет компонент под названием Internet Information Services 5.0, который объединит в себе Internet Information Server 5.0, включая ASP 3.0 и Active Data Objects (ADO) 2.1 и такие дополнительные сервисы, как Certificate Server и Index Server. Ниже мы кратко рассмотрим основные изменения в ASP 3.0.

Идеология

ASP является серверным расширением языка HTML, построенным на основе использования одного дополнительного элемента ( ), скриптовых языков типа JScript и VBScript (теоретически возможно использование таких языков, как PerlScript и Tcl) и объектной модели. Например:

Обратите внимание на то, что серверные элементы отделены от клиентских, хотя возможно и такое «смешение»:

Принцип работы ASP показан на диаграмме. Клиентский браузер обращается к ресурсу, расположенному на сервере, посылая соответствующий HTTP-запрос. Если запрос был адресован ASP-странице, IIS передает ее на обработку ISAPI-фильтру ASP.DLL, который выполняет включенную в состав страницы ASP-программу и возвращает серверу HTML-страницу. Эта страница пересылается запросившему ее клиенту.

Технология ASP подразумевает использование скриптовых языков (по умолчанию используется язык VBScript) и объектной модели. В ASP 2.0 объектная модель состоит из шести объектов: ScriptingContext, Request, Response, Application, Session и Server. Каждый из этих объектов отвечает за определенные функции Web-приложения. Основными объектами являются Request и Response, которые представляют собой программную реализацию запроса клиента к серверу (объект Request) и ответа сервера (объект Response).

Помимо этого, существуют объекты для работы с файловой системой (FileSystemObject, Drive, Folder, File) и соответствующие коллекции (Drives, Folders, Files), объект для работы с текстовыми файлами — TextStream и объект, реализующий специальный тип коллекций — Dictionary. Также в распоряжении разработчиков находится несколько COM-компонентов, которые можно использовать в ASP-приложениях: Ad Rotator, Browser Capabilities, Contentent Linking и т.п., включая Collaborative Data Objects (CDO), доступные только под Windows NT.

В распоряжении разработчика находятся все функции и объекты, реализованные в VBScript и JScript, причем эти два языка при необходимости можно смешивать внутри ASP-страницы.

Для расширения функциональности ASP можно использовать десятки готовых коммерческих, условно-бесплатных и бесплатных компонентов, а также создавать собственные — для этого подходит любое средство разработки, поддерживающее создание COM-объектов: Visual Basic, Visual C++, Visual J++, Borland Delphi и т.п.

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

Средства разработки

Основным средством разработки ASP-приложений является Microsoft Visual InterDev — продукт, который распространяется либо отдельно, либо в составе Microsoft Visual Studio. Обзор этого средства публикуется в этом номере, поэтому здесь мы остановимся только на тех характеристиках Microsoft Visual InterDev, которые интересны для данной статьи.

Visual InterDev предоставляет в распоряжение разработчика:

Визуальные средства разработки приложений — WYSIWYG-редактор, редактор исходного кода с выделением синтаксиса цветом, средства сборки, отладки и внедрения приложений

Интегрированные средства для работы с базами данных

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

Средства для коллективной разработки приложений

Средства для разработки корпоративных приложений — интеграция с серверами баз данных, возможность моделирования приложений, интеграция с сервисами Microsoft BackOffice 4.5

Дополнительную информацию можно получить на Web-узле фирмы Microsoft или из Microsoft Visual InterDev Web Solutions Kit.

Помимо Microsoft Visual InterDev для разработки ASP-приложений можно использовать Drumbeat 2000 фирмы Elemental Software, PowerSite фирмы Sybase и Mediatruck фирмы r.e.d.d. System.

Из HTML-редакторов, поддерживающих ASP, можно отметить Microsoft FrontPage, NetObjects Fusion, Allaire HomeSite, Macromedia Dreamweaver и ряд других.

Связь с данными

Для связи с данными разработчики используют объектную модель Active Data Objects, доступную из скриптовых языков. ADO представляет собой высокоуровневый программный интерфейс к OLE DB и ODBC и является частью архитектуры Universal Data Access (см. КомпьютерПресс № 1’99).

При создании приложений, использующих транзакции, ASP-приложения интегрируются с Microsoft Transaction Server (MTS) через объект ObjectContext и его методы SetComplete и SetAbort.

Интеграция с технологиями


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

Отметим, что Microsoft работает над расширенной поддержкой XML на сервере (полная поддержка текущей версии XML реализована в Internet Explorer 5.0).

Следует сказать, что из ASP-приложений доступны любые Automation-серверы, например, продукты семейства Microsoft Office.

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

Корпоративные стандарты

Microsoft предлагает использовать технологии COM/DCOM для создания трехзвенных приложений, оперируя, при необходимости, сервером транзакций MTS. Продвижение собственной компонентной технологии, которая в скором времени предстанет перед разработчиками в виде технологии COM+ (COM/DCOM + MTS), не подразумевает поддержки таких объектных стандартов, как CORBA или Enterprise JavaBeans. Впрочем, при желании и эти сервисы могут быть интегрированы в ASP-приложения.

Средства администрирования

Под управлением Windows 95/98 для Personal Web Server предоставляются минимальные средства администрирования (Personal Web Manager), отвечающие назначению данного Web-сервера.

При использовании Internet Information Server средства администрирования интегрированы в Microsoft Management Console (MMC) и предоставляют администраторам больше возможностей для настройки параметров.

Отметим, что Visual InterDev поддерживает концепцию ASP-приложений и позволяет настраивать ряд характеристик самих приложений.

Где взять ASP

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

Как было отмечено выше, ASP 3.0 будет интегрированной частью Windows 2000. Пока этот продукт еще не вышел, у вас есть следующие варианты:

Windows NT 4.0 Option Pack — содержит ASP 2.0 для Personal Web Server (Windows 95 и Windows NT 4 Workstation) и для Internet Information Server (Windows NT 4 Server). Option Pack доступен подписчикам MSDN (см. диск 2 для BackOffice Test Platform или диск 13 для Development Platform), подписчикам Microsoft TechNet, а также может быть загружен с Web-узла Microsoft по адресу: http://www.microsoft.com/windows/downloads/contents/Update/NT4OptPk/default.asp

Windows 98 — в каталоге add-ons/pws находится Personal Web Server с поддержкой ASP 2.0

Visual Studio 6 — в состав этого продукта включены Personal Web Server, IIS и, соответственно, ASP.

После того как мы познакомились с технологией ASP, ее архитектурой и предоставляемыми возможностями, давайте рассмотрим некоторые операции, часто встречающиеся при создании Web-приложений. Более подробно о технологии ASP можно узнать из статьи «Технология Active Server Pages 2.0», опубликованной в КомпьютерПресс №2-98.

Системные требования

Чтобы использовать ASP под Windows NT, необходимо установить IIS, для работы с которым на платформе Intel необходимо не менее 16 Мбайт ОЗУ (рекомендуется 32-64 Мбайт) и не менее 50 Мбайт дискового пространства (рекомендуется 200 Мбайт). На платформе Alpha требуется не менее 48 Мбайт оперативной памяти. Personal Web Server для Windows 98 не предъявляет дополнительных требований к конфигурации компьютера.

Как известно, механизм cookie (впервые появившийся в браузере Netscape 2.0) используется для хранения информации на клиентском компьютере и извлечения этой информации. Объекты Response и Request имеют коллекцию Cookies. Коллекция Request.Cookies содержит cookies, имеющиеся на клиентском компьютере, коллекция Response.Cookies позволяет либо изменить значения существующих cookies, либо задать новые.

Например, для задания значения cookie можно использовать следующий код:

а для получения значения cookie — такой код:

Отметим, что Cookies, как и любая коллекция, имеет два свойства — Count, позволяющее узнать число элементов коллекции, и HasKeys, с помощью которого можно определить, есть ли в коллекции cookie c несколькими значениями.

Серверные переменные

Для доступа к серверным переменным (они также называются переменными среды) в ASP используется коллекция ServerVariables объекта Request. Например, чтобы узнать название и версию программного обеспечения, работающего на Web-сервере, мы можем написать такой код:

а чтобы получить тип и версию клиентского браузера, мы можем использовать следующий код:

Отметим, что если клиентский браузер посылает дополнительную информацию, она также доступна через коллекцию Request.ServerVariables.

Действия с формами

Формы широко используются для передачи информации с клиентского браузера на сервер. Существуют два способа передачи информации, задаваемые атрибутом METHOD элемента FORM, — POST и GET. При использовании метода GET вся информация передается как часть URL, и некоторые версии браузеров накладывают ограничение в 255 символов на объем такой информации. При этом передаваемая информация видна всем. При использовании метода POST информация передается как часть HTTP-запроса, и на ее объем никаких ограничений не накладывается.

Для получения информации, переданной методом GET, в ASP используется коллекция QueryString объекта Request. В случае применения метода POST информация становится доступной через коллекцию Form того же объекта Request.

Давайте создадим небольшую форму и посмотрим, как принять информацию из нее в ASP-программе. Вот код нашей формы:

Как видно из приведенного кода, сначала мы используем метод GET, указав в качестве обработчика данных программу, расположенную в файле DEMOFORM.ASP. Наша программа будет всего лишь выводить переданные данные на экран. Вот ее код:

Мы обращаемся к элементам коллекции QueryString объекта Request по именам, заданным атрибутами NAME соответствующих элементов формы.

Теперь изменим способ передачи информации — будем использовать метод POST:

Так как механизм передачи информации будет уже другим — данные вместо URL будут составлять часть HTTP-запроса, — мы должны использовать коллекцию Form:

Илон Маск рекомендует:  Что такое код mcal_event_init

Отметим, что в новых приложениях рекомендуется использовать метод POST (и, соответственно, коллекцию Request.Form), но для того, чтобы передавать данные без применения форм, например через элемент A, вам придется воспользоваться коллекцией QueryString.

Публикация данных

Возможность публикации динамических данных — одна из характеристик, отличающих так называемые Web-приложения от набора статичных HTML-страниц. Для публикации данных в ASP мы должны использовать объектную модель ADO, обращаясь к ней из скриптовых программ.

Отметим, что средства разработки — Visual InterDev и Drumbeat 2000 позволяют автоматизировать публикацию данных, но создаваемый ими код получается слишком объемным (он занимает несколько десятков, а то и сотен строк), чтобы приводить его здесь. Поэтому мы будем использовать «профессиональное» средство NotePad. Описание визуальных средств для работы с данными, входящих в состав Visual InterDev, можно найти в обзоре, публикуемом в этом номере.

Для начала, возьмем базу, в которой перечислены некоторые статьи, опубликованные в «КомпьютерПресс», их авторы, а также продукты, описанные в статьях, и фирмы, производящие эти продукты. Будем выводить на экран браузера содержимое этой базы в виде таблицы, в которой каждая строка отображает автора, название статьи, идентификатор продукта и идентификатор фирмы.

Вот текст ASP-программы, которая выполняет необходимые нам действия:

Весь код написан «вручную», за исключением SQL-запроса, который я построил в Visual InterDev. Еще раз отмечу, что если бы я использовал какое-либо средство для разработки, то получил бы более сложный код. Кроме того, эту программу можно сохранить в виде шаблона и использовать для дальнейших разработок.

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

Запросы будут выглядеть так:

Обратите внимание на то, что мы используем одну ASP-программу — RESLIST.ASP, передавая ей различные значения (в нашем примере — это идентификаторы подкатегории).

Вернемся к предыдущему коду и внесем в него ряд изменений — они показаны выделенным шрифтом:

Вот результат работы нашей программы:

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

Управление файлами на сервере

Для управления файлами на сервере — получения списка каталогов, удаления и перемещения файлов, их переименования, а также для того, чтобы прочитать содержимое текстового файла, изменить его или дополнить, в ASP существует несколько дополнительных объектов: FileSystemObject, Drive, Folder, File и TextStream, а также их коллекции — Drives, Folders и Files.

Чтобы прочитать содержимое текстового файла, например, AUTOEXEC.BAT и вывести его на экран, мы должны написать следующий код:

Список файлов в каталоге можно получить с помощью следующего кода:

Сервисы для приложений

Active Server Pages — это событийно-ориентированная технология. В ней существуют понятия приложения (объект Application) и сессии (объект Session). Каждый из этих двух объектов имеет два события — OnStart и OnEnd. Первое возникает при начальном запуске приложения или новой сессии, второе — при завершении сесии или приложения.

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

«Время жизни» сессии поддерживается с помощью свойства SessionID объекта Session — значение этого свойства хранится на клиентском компьютере в виде cookie.

Имеется возможность задания глобальных для всего приложения объектов — они хранятся в коллекции StaticObjects объекта Application — и объектов, локальных для текущей сессии, которые доступны через коллекцию StaticObjects объекта Session.

Еще раз отметим, что в ASP все приложение разделено на функциональность соответствующих объектов: все, что может посылать клиент, поддерживается объектом Request; все, что возвращает сервер, — объектом Response; действия на уровне сессии поддерживаются объектом Session; на уровне приложения — объектом Application; а ряд утилитарных методов реализован в объекте Server.

ASP 3.0

Как мы отметили выше, ASP 3.0 станет интегрированной частью Internet Information Services 5.0 — сервисов, входящих в Windows 2000. Обсуждение этих сервисов заслуживает отдельной статьи. Здесь же мы кратко остановимся на основных новинках в ASP 3.0, о которых известно на уровне второй бета-версии Windows 2000.

Некоторые изменения коснулись объектной модели.

У объекта Server появилось три новых метода, два из которых — Transfer и Execute — позволяют выполнять перенаправление страниц на сервере, минуя клиента.


Появился новый объект ASPError. Этот объект, возвращаемый методом Server.GetLastError, позволяет получить различную информацию об ошибках с кодами 4xx и 5xx и сформировать собственное сообщение об ошибке.

Объект ObjectContext (используемый для поддержки транзакций) стал основной базовой объектной модели — это означает, что все метод и свойства объектов ASP теперь будут доступны через ObjectContext, а не через ScriptingContext, как это было раньше..

По умолчанию теперь включена буферизация (Response.Buffer = True), что сделало отклики сервера более быстрыми.

Есть еще несколько изменений. Улучшена логика работы метода IsClientConnected, который теперь вызывается автоматически перед посылкой информации клиенту.

Стал более «разумным» и компонент Browser Capabilities, который теперь «умеет» анализировать cookie-инфомацию и добавлять ее в список своих свойств.

Переработан интерпретатор ASP, который теперь «понимает», является ли та или иная страница действительно ASP-программой или просто HTML-файлом с расширением .ASP.

Компоненты, которые используются только в одной части программы, сразу же удаляются из памяти после их работы. Если эта функциональность вам не подходит, вы можете использовать новый флаг OnEndPage.

И еще одна новинка — возможность кодирования клиентских скриптовых программ. Для этого клиентским браузером должен быть Microsoft Internet Explorer 5.0.

В состав IIS 5 войдет и новая версия ADO — ADO 2.1

Помимо этого, ASP 3.0 будет базироваться на новых версиях скриптовых языков — VBScript и JScript 5.0, в которых также есть ряд дополнений и изменений

По мере появления дополнительной информации по Windows 2000 и Internet Information Services, мы будем знакомить вас с другими новинками в этой системе.

После того как мы рассмотрели различные аспекты использования технологии Active Server Pages, давайте обратимся к другой технологии — ColdFusion фирмы Allaire.

ColdFusion

Cold Fusion — это сервер Web-приложений, который отрабатывает специальным образом написанные программы и отсылает результат их работы на клиентский компьютер. Cold Fusion работает совместно с обычным Web-сервером, обрабатывая только те программы, которые написаны на языке Cold Fusion.

Принцип работы ColdFusion показан на диаграмме. Клиентский браузер обращается к ресурсу, расположенному на сервере, посылая соответствующий HTTP-запрос. Если запрос был адресован CF-странице (файлу с расширением CFM), сервер отдает его на обработку серверу ColdFusion, который выполняет включенную в состав страницы ColdFuison-программу и возвращает серверу HTML-страницу. Эта страница пересылается запросившему ее клиенту.

Сервер Web-приложений состоит из следующих компонентов: ColdFusion Server — собственно сервер приложений, обрабатывающий клиентские запросы, ColdFusion Studio — интегрированная среда разработки приложений для ColdFusion, базирующаяся на HTML-редакторе Allaire HomeSite (см. «HTML-редакторы: высшая лига» в этом номере «КомпьютерПресс»); ColdFusion Administrator — средство для управления приложениями, сервером приложений и администрирования кластеров (входит в состав ColdFusion Server) и ColdFusion Extensions (CFX) — открытая архитектура на базе языка XML, позволяющая использовать новые серверные компоненты и такие технологии, как COM, CORBA, C/C++, VBScript, JavaScript или CFML. Этот компонент входит в состав ColdFusion Server и ColdFusion Studio. Также в состав ColdFusion Studio входит однопользовательская версия ColdFusion Server, с помощью которой можно локально тестировать созадваемые на ColdFusion приложения.

Идеология

В ColdFusion используется серверный скриптовый язык на основе специльных HTML-элементов. Этот язык называется ColdFusion Markup Language (CFML). Элементы языка легко интегрируются с элементами HTML и XML. Например:

Язык CFML поддерживает более 70 специализированных элементов, 200 функций и может работать более чем с 400 компонентами, разработанными сторонними фирмами: в языке реализованы средства для управления COM- и CORBA-объектами. Язык CFML обеспечивает следующие возможности: инкапсуляцию процессов (единую возможность доступа ко всем серверам, интегрированным с ColdFusion, включая серверы баз данных, серверы электронной почты, серверы каталогов, Web- и файловые серверы), расширенный синтаксис для комплексной обработки данных, структурную обработку исключительных ситуаций, манипуляции с переменными, богатую библиотеку функций для работы с текстовыми строками, датой/временем, списками, запросами, математическими выражениями, поддержку регулярных выражений, работу с массивами и структурами, динамическое управление логикой работы и возможность повторного использования созданного кода.

Средства разработки

Для разработки приложений ColdFusion используется ColdFusion Studio — редактор на основе Allaire HomeSite, который позволяет работать с элементами HTML, CFML и XML и предоставляет в распоряжение разработчика среду, в которой, помимо самого редактора, есть отладчик, средства визуальной работы с базами данных, средства проверки создаваемого кода, инспектор элементов, утилита для построения сложных CFML-выражений и различные «мастера», автоматизирующие многие рутинные операции.

Среда разработчика поддерживает возможность работы с локальными и удаленными (на сервере ColdFusion) файлами и позволяет создавать не только отдельные страницы, но и целые проекты, называемые приложениями ColdFusion.

Помимо ColdFusion Studio для создания приложений можно использовать и продукты сторонних фирм — Macromedia Dreamweaver, NetObjects Fusion и NetObjects ScriptBuilder.

Связь с данными

Для создания Web-приложений, работающих с базами данных, в ColdFusion существует поддержка практически всех основных технологий: ODBC — для доступа к реляционным базам данных, включая Microsoft Access и SQL Server, собственные драйверы для доступа к Oracle и Sybase, OLE DB для различных источников данных, включая Microsoft Exchange, возможность динамического формирования SQL-запросов, поддержка хранимых процедур, транзакций, встроенные средства проверки вводимых данных, средства для генерации отчетов.

Некоторые операции с данными, возможные в ColdFusion, мы рассмотрим ниже.

Интеграция с технологиями

ColdFusion обладает тесной интеграцией с различными Internet-протоколами и технологиями, что делает более простым их использование в Web-приложениях. Среди этих технологий:

Полнотекстовая поисковая система на базе Verify SEARCH ’97

Полная поддержка языка XML для обмена данными между серверами и другими приложениями с использованием Web Distributed Data Exchange (WDDX) и XML

Полная поддержка работы с серверами электронной почты (SMTP и POP)

Возможность использования сервисов Internet (FTP, HTTP)

Интеграция сервисов каталогов (LDAP), включая Netscape Directory Server, Microsoft Exchange Server, сервисы Windows NT, сервисы Novell NDS, сервисы Banyan Vines и другие

Возможность работы с файловыми серверами

Возможность работы с FTP-серверами

Корпоративные стандарты

В ColdFusion поддерживаются различные корпоративные стандарты, включая объектные стандарты:

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

COM-компоненты. При использовании COM-компонентов в приложениях можно управлять их свойствами, вызывать их методы и контролировать их выполнение через Microsoft Transaction Server (MTS)

ColdFusion Extensions (CFX). Можно создавать собственные компоненты и элементы языка для расширения функциональности ColdFusion

Visual Tool Components (VTX). Новые визуальные компоненты могут расширять функциональность ColdFusion Studio

Средства администрирования

В состав ColdFusion входят средства удаленного администрирования и управления кластерами. Эти средства работают из любого Web-браузера.

Здесь также есть Cluster Explorer для управления серверами в кластере, отключения серверов, получения уведомлений о серверных событиях. Вся серверная статистика доступна либо через Performance Monitor (Windows NT), либо через специальную Unix-утилиту.

Системные требования

Windows NT Server 4.0

70 Мбайт свободного пространства на диске

64/128 Мбайт оперативной памяти

Помимо Microsoft Internet Information Server (ISAPI), поддерживаются следующие интерфейсы:

Netscape Server API (NSAPI)

WebSite Server API (WSAPI)

Apache API 1.3.2 или выше

Common Gateway Interface (CGI)

SPARC Solaris 2.6/2.5.1

128 Мбайт оперативной памяти

120 Мбайт свободного пространства на диске

Помимо Netscape Enterprise Server, поддерживаются следующие интерфейсы:

Apache API 1.3.2 or higher

Common Gateway Interface (CGI)

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

Если для чтения и записи cookie в ASP используются коллекции Cookies объектов Request и Response, то в ColdFusion для этих целей служит элемент CFCOOKIE. Его атрибуты позволяют задавать различные характеристики cookie: название, значение, срок действия, защищенность, маршрут и домен.

Для задания значения cookie можно использовать следующий код:

а для получения значения cookie — такой код:


Отметим, что здесь мы используем встроенные функции ColdFusion — Now() для получения текущей даты и времени и DateFormat() для форматирования даты и времени.

Серверные переменные

Если для доступа к серверным переменным при использовании ASP предлагается воспользоваться коллекцией Request.ServerVariables, то в ColdFusion для этих целей используется набор переменных CGI.xxx, где xxx — одно из допустимых для серверных переменных значений. Например:

возвращает название и версию программного обеспечения, работающего на Web-сервере, а код

позволяет узнать тип и версию клиентского браузера.

Действия с формами

Для получения информации, переданной с клиентского браузера на сервер, мы будем использовать ту же форму, что и в примере с ASP, изменив только атрибут ACTION элемента FORM:

Нам надо лишь написать соответствующий файл DEMOFORM.CFM, в котором мы бы приняли данные, переданные из формы, и, например, отобразили бы их на экране. Код, необходимый для этого, будет очень простым:

Как видно из приведенного примера, использование переменной FORM, обеспечивает нам доступ к информации, переданной в форме, точно так же, как и в ASP при использовании коллекции Request.Form.

Публикация данных

Работу над публикацией данных мы начинаем с того, что задаем RDS-сервер — на платформе Windows ColdFusion работает через сервисы данных Microsoft. В нашем примере это будет сервер demo, расположенный на компьютере localhost. После того как RDS-сервер описан, мы получаем список всех доступных ODBC-источников данных. Этот список отображается в панели, служащей, помимо окна редактирования, основным источником информации при разработке страницы или Web-узла. В этой панели мы можем просматривать таблицы, их содержимое, но самое главное заключается в том, что эта панель обеспечивает нам доступ к редактору запросов, с помощью которого мы формируем SQL-запросы, проверяем результаты их выполнения.

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

Моей задачей было вывести на экран браузера содержимое этой базы в виде таблицы, в которой каждая строка отображала бы автора, название статьи, идентификатор продукта и идентификатор фирмы. Используя Query Builder, я сформировал SQL-запрос простым переносом необходимых мне полей.

Затем я проверил, как выполняется данный запрос и сохранил его в файле.

После того как запрос сформирован, можно создавать страницу, на которой будут отображаться его результаты. Вернувшись в ColdFusion Studio, я создал новый файл и просто перетащил запрос из панели данных в окно редактора:

Далее я добавил HTML-элементы, описывающие таблицу и элементы ColdFusion для вывода результатов запроса. В результате получился следующий HTML-документ (выделенным шрифтом показаны элементы, специфичные для ColdFusion):

Я сохранил его на сервере как ARTICLES.CFM и открыл в браузере. Результат показан на следующей иллюстрации.

Итак, мы освоили азы публикации данных. Можно идти дальше. Давайте посмотрим, как динамически реагировать на запросы, посылаемые в URL. Для этого возьмем другую базу — в ней собраны ссылки на ресурсы по различным вопросам Web-программирования. Каждая запись в этой базе состоит из названия, описания, собственно ссылки и идентификатора подкатегории. Мы сделаем так, чтобы на одной странице отображались различные подкатегории в виде ссылок, каждая из которых представляет собой запрос к базе данных.

Сначала сформируем сам запрос с помощью Query Builder. Мы выбираем необходимые нам поля — в данном примере это будут название, описание и ссылка. Затем мы задаем критерий, который в нашем примере будет равенством значения поля подкатегории значению переменной.

Отметим, что Query Builder дает нам возможность сразу же протестировать этот запрос, позволяя ввести то или иное значение переменной.

Теперь мы можем создать страницу, на которой будут расположены запросы к базе данных. Запрос выглядит привычным образом: адрес страницы, на которой расположен код, выводящий результаты запроса, символ «?» и параметр запроса:

Далее мы формируем страницу, которая будет выводить результаты запроса. Как и в предыдущем примере, перетаскиваем наш запрос в редактор кода, добавляем код для вывода и определяем переменную, которая будет служить критерием запроса:

Здесь переменная RES будет хранить параметр с именем SUB, переданный через URL. Собственно говоря, все готово для того, чтобы проверить наше приложение. Вот его исходный текст (выделенным шрифтом показаны элементы, специфичные для ColdFusion):

И результат работы по одному из запросов:

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

Управление файлами на сервере

Как мы отметили выше, для управления файлами на сервере ASP предлагает использовать объект FileSystemObject, который предоставляет необходимые свойства, методы и коллекции . В ColdFusion для этих целей используются элементы CFFILE и CFDIRECTORY, атрибут ACTION которых указывает, какие действия над файлами мы собираемся выполнить. Для элемента CFFILE это могут быть следующие значения

UPLOAD Сохраняет файл, загруженный на сервер через форму
MOVE Перемещает файл из одного каталога в другой
RENAME Переименовывает файл
COPY Копирует файл
DELETE Удаляет файл
READ Считывает содержимое текстового файла
WRITE Записывает содержимое текстового файла
APPEND Добавляет содержимое к текстовому файлу

Чтобы прочитать содержимое текстового файла, например, AUTOEXEC.BAT и вывести его на экран, мы должны написать следующий код:

Для элемента CFDIRECTORY возможно использование следующих значений атрибута ACTION:

LIST Выдает список файлов в каталоге (значение по умолчанию)
CREATE Создает каталог
DELETE Удаляет каталог
RENAME Переименовывает каталог

Например, список файлов в каталоге можно получить с помощью следующего кода:

Отметим, что вместо использования HTML-элементов для формирования таблицы можно воспользоваться элементами CFTABLE и CFCOL. В зависимости от значений их атрибутов

Сервисы для приложений

Некоторым аналогом ASP-объекта Application в ColdFusion является элемент CFAPPLICATION. С его помощью можно поддерживать «время жизни» сессии по аналогии с Session элемента CFAPPLICATION переменные сохраняются не как cookie, что освобождает их от соответствующих ограничений. Доступ к переменным осуществляется через глобальную переменную CLIENT.xxx. где xxx — имя переменной. Существует ряд клиентских переменных — HitCount, LastVisit и TimeCreated, доступ к значениям которых также осуществляется через CLIENT.

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

Элемент CFLOCATION позволяет перенаправить действия в другой HTML-файл. Этот элемент является аналогом ASP-метода Response.Redirect.

С помощью элемента CFCONTENT можно либо создать новый файл, либо считать содержимое существующего и передать его на клиентский компьютер. Этот элемент поддерживает задание MIME-типа, поэтому его действие не ограничивается HTML- или текстовыми файлами. Ближайшим аналогом элемента CFCONTENT является ASP-метод Response.BinaryWrite.

Отметим еще одну функциональную возможность ColdFusion. Элемент CFMAIL позволяет автоматически отсылать электронную почту, причем с подедржкой прикрепленных файлов. Назначение его атрибутов интуитивно понятно: TO, FROM, CC, SUBJECT, QUERY, STARTROW, MAXROWS, GROUP, MIMEATTACH. Таким образом, используя всего пару элементов, можно отсылать по электронной почте, например, запросы к базе данных.

Заключение

В данном обзоре мы рассмотрели две технологии для создания Web-приложений — Active Server Pages фирмы Microsoft и ColdFusion фирмы Allaire.

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

Позволю себе лишь один дополнительный комментарий. ASP и ColdFusion — две одинаково проверенные временем технологии (ColdFusion — чуть «старше»), и они обладают примерно одинаковыми возможностями. Выбор той или иной технологии — вопрос сложный, связанный не только с ее функциональностью, но и с выбором платформы, необходимостью интеграции с другими сервисами, технологиями, интерфейсами. На мой взгляд, лучшим вариантом было бы объединение лучших черт ColdFusion и ASP. Возможно, со временем кто-нибудь сделает нечто подобное.

Capabilities

Capabilities are a series of key-value pairs that allow you to configure your Selenium tests on the BrowserStack Selenium grid.

Use our Capabilities Generator to configure your Selenium test suite in the language of your choice. The capabilities generator let’s you select from a comprehensive set of options you can use to customize your tests on the BrowserStack Selenium grid. Start by selecting your desired capabilities below.

You can also find out more about each capability by scrolling to our Capabilities Reference section.

Learn about the key changes coming with Version 4 of Selenium and the changes you need to make to your test suite. Refer more here.

  • Legacy Protocol
  • W3C Protocol

Capabilities Generator

Capabilities Reference

Selenium capabilities

Capability Values
platform

OS you want to test.

MAC, WIN8, XP, WINDOWS, ANY, ANDROID.
Default: ANY browserName

Browser you want to test.

firefox, chrome, internet explorer, safari, opera, edge, iPad, iPhone, android
Default: chrome version

Browser version you want to test.

View list of browser versions to update this field.
Default: Latest stable version of browser selected. acceptSslCerts

Use this capability to ignore invalid certificate error in your test.


true, false
Default: false

Browserstack-specific capabilities

Capability Values
os

OS you want to test.

WINDOWS, OS X os_version

OS version you want to test.

Windows: XP, 7, 8, 8.1 and 10
OS X: Snow Leopard, Lion, Mountain Lion, Mavericks, Yosemite, El Capitan, Sierra, High Sierra, Mojave browser

Browser you want to test.

Firefox, Safari, IE, Chrome, Opera, Edge browser_version

Browser version you want to test.

View list of browser versions to update this field.
Default: Latest stable version of browser selected. browserstack.use_w3c

Run your Selenium tests in W3C mode. If this is enabled, we assume that your Selenium capabilities are compliant with the W3C-spec. Read more here — https://www.w3.org/TR/webdriver/

true, false
Default: false
Note: W3C is currently supported on Firefox version 53 and above for Selenium versions: 3.7.0, 3.7.1, 3.8.0, 3.8.1, 3.9.0, 3.9.1, 3.10.0, 3.11.0, 3.12.0, 3.13.0, 3.14.0, 3.141.0, 3.141.5, 3.141.59

Test configuration capabilities:

Capability Values
project

Allows the user to specify a name for a logical group of builds.

Example: loginformproject
Default: Untitled Project
build

Allows the user to specify a name for a logical group of tests.

Example: build 4.5
Default: Untitled Build
name

Allows the user to specify an identifier for the test run.

Example: logintest
browserstack.local

Required if you are testing against internal/local servers.

true, false
Default: false
browserstack.localIdentifier
Use this capability to specify the unique Local Testing connection name in your test.
String
Example: local_connection_name
browserstack.debug

Required if you want to generate screenshots at various steps in your test.

true, false
Default: false
browserstack.console

Required if you want to capture browser console logs at various steps in your test. Console Logs are available for Selenium tests on Desktop Chrome, Desktop Firefox, Mobile Chrome (Android devices) and Mobile Safari (iOS devices).

disable, errors, warnings, info, verbose
Default: errors

disable: stops capturing the console logs
errors: shows only error output in console
warnings: shows warning and error output in the console
info: shows info statement, warning and error output in the console
verbose: shows all console output

browserstack.networkLogs

Required if you want to capture network logs for your test. Network Logs are supported for all desktop browsers, Android and iOS devices with a few exceptions — IE 10 on any OS; IE 11 on Windows 7 / 8.1 and any browser on MacOS High Sierra and Mojave.

true, false
Default: false
Note: You may experience minor reductions in performance when testing with Network Logs turned on with Desktop sessions.
browserstack.appiumLogs

Required if you want to capture raw appium logs for your test.

true, false
Default: true
browserstack.video

Required if you want to enable video recording during your test.

true, false
Default: true
browserstack.seleniumLogs

Required if you want to enable selenium logs for your desktop browser tests.

true, false
Default: true
browserstack.geoLocation

Required if you want to test how your website behaves in specific countries.

«CN» for China, «FR» for France, «IN» for India and «US» for United States of America
Note: Complete list of of over 40+ countries can be found here.
browserstack.timezone

Required if you want to configure tests to run on a custom time zone.

New_York (for America/New_York), Los_Angeles (for America/Los_Angeles), La_Rioja (for America/Argentina/La_Rioja)
Note: You can view the complete list of timezones on Wikipedia.
resolution

Set the resolution of VM before beginning of your test.

Windows (XP,7): 800×600, 1024×768, 1280×800, 1280×1024, 1366×768, 1440×900, 1680×1050, 1600×1200, 1920×1200, 1920×1080, 2048×1536

Windows (8,8.1,10): 1024×768, 1280×800, 1280×1024, 1366×768, 1440×900, 1680×1050, 1600×1200, 1920×1200, 1920×1080, 2048×1536

OS X: 1024×768, 1280×960, 1280×1024, 1600×1200, 1920×1080

Default: 1024×768

Note: You can also resize/maximize browser windows during test execution. See how

browserstack.selenium_version

Use this capability to set the Selenium WebDriver version in test scripts.

«2.37.0», «2.40.0», «2.41.0», «2.42.1», «2.42.2», «2.43.1», «2.44.0», «2.45.0», «2.46.0», «2.47.1», «2.48.2», «2.49.0», «2.50.0», «2.51.0», «2.52.0», «2.53.0», «2.53.1», «3.0.0-beta1», «3.0.0-beta2», «3.0.0-beta4», «3.0.0», «3.0.1», «3.1.0», «3.2.0», «3.3.0», «3.3.1», «3.4.0», «3.5.2», «3.5.3», «3.6.0», «3.7.0», «3.7.1», «3.8.0», «3.8.1», «3.9.0», «3.9.1», «3.10.0», «3.11.0», «3.12.0», «3.13.0», «3.14.0», «3.141.0», «3.141.5», «3.141.59»
Default: 2.53.0 ( 2.45.0 for Safari )
Note: OS X Snow Leopard does not support versions 2.47.1 and higher. Default for OS X Snow Leopard: 2.45.0
browserstack.maskCommands
Use this capability to mask the data sent or retrieved by certain commands.

Note: You can pass multiple commands in a single array, separated by commas.

Default: Empty Array

setValues
All the text send via sendKeys command will be redacted.

getValues
All the text retrieved via get command will be redacted.

setCookies
All the cookies which are set by the addCookie command will be redacted.

getCookies
All the cookie values obtained using the getCookies and getCookieNamed command will be redacted.

Example:
Note: Sensitive data in certain logs (like Selenium, Appium, video, etc.) cannot be masked. View our documentation to disable these logs instead.

Mobile capabilities:

Capability Values
device

Specifies a particular mobile device for the test environment.

You can find a full list of supported devices here
realMobile

Use this flag to test on a physical mobile device.

true, false
Default: false

Real Android devices are now available for Automated testing. View Documentation

browserstack.appium_version

Use this capability to set the Appium version in your test scripts.


Android: 1.6.5 (default), 1.7.1 , 1.7.2 , 1.8.0 , 1.9.1 , 1.10.1 , 1.11.1 , 1.12.1 , 1.13.0 , 1.14.0 , 1.15.0
iOS: 1.6.5 , 1.7.0 (default), 1.7.1 , 1.7.2 , 1.8.0 , 1.9.1 (default on iOS 12), 1.10.1 , 1.11.1 , 1.12.1 , 1.13.0 , 1.14.0 (default on iOS 13)

Note: All values are strings.

os

OS you want to test.

ios, android
browser

Browser you want to test.

iPad, iPhone, Android
deviceOrientation

Set the screen orientation of mobile device.

portrait, landscape
Default: portrait
browserstack.customNetwork

Required if you want to simulate the custom network condition.

Example (‘1000’, ‘1000’, ‘100’, ‘1’)
download speed (kbps), upload speed (kbps), latency (ms), packet loss (%)
browserstack.networkProfile

Required if you want to simulate different network conditions.

Example: 2g-gprs-good, 2g-gprs-lossy, 3g-umts-good etc.
Complete list of network profiles can be found here.

Chrome specific capabilities:

Capability Values
browserstack.chrome.driver

Use this capability to specify the chromedriver version.

The supported values are «20», «2.3», «2.6», «2.9», «2.10», «2.11», «2.12», «2.15», «2.16», «2.18», «2.19», «2.20», «2.21», «2.22», «2.23», «2.24», «2.25», «2.26», «2.27», «2.28», «2.29», «2.30», «2.31», «2.32», «2.33», «2.34», «2.35», «2.36», «2.37», «2.38», «2.39», «2.40», «2.41», «2.42», «2.43», «2.44», «2.45», «2.46», «73.0.3683.68», «74.0.3729.6», «75.0.3770.8», «75.0.3770.90», «75.0.3770.140», «76.0.3809.68», «77.0.3865.40», «78.0.3904.70», «79.0.3945.16».

To ensure you use the right version of Chrome with the right version of the chromedriver, please use our Capability Builder, which automatically shows you the right combinations of Chrome and chromedriver.

Default: Browserstack automatically selects the chromedriver version based on the browser version provided.

IE/Edge capabilities:

Capability Values
browserstack.ie.noFlash

Use this capability to disable flash on Internet Explorer.

true, false
Default: false
browserstack.ie.compatibility

Use this capability to set Internet Explorer Compatibility View.

The supported values are 11001, 11000, 10001, 10000, 9999, 9000, 8888, 8000 and 7000.

Refer to this Internet Explorer documentation for an explanation on these values.

browserstack.ie.arch

Use this capability to specify the IE WebDriver architecture.

The supported values are «x32» for 32-bit and «x64» for 64-bit.

To ensure you use the right version of IE with the right version of the IE driver architecture, please use our Capability Builder, which automatically shows you the right combinations of IE and the IE driver architecture.

Default: Browserstack automatically selects the IE WebDriver architecture based on the browser version provided.

browserstack.ie.driver

Use this capability to specify the IE WebDriver version.

The supported values are «2.21», «2.22», «2.23», «2.24», «2.25», «2.26», «2.27», «2.28», «2.29», «2.30», «2.31», «2.32», «2.34», «2.37», «2.38», «2.39», «2.40», «2.41», «2.44», «2.45», «2.46», «2.47», «2.48», «2.49», «2.50», «2.51», «2.52», «2.52.2», «2.53», «2.53.1», «3.0.0», «3.1.0», «3.2.0», «3.3.0», «3.4.0», «3.5.0», «3.5.1», «3.6.0», «3.7.0», «3.8.0», «3.9.0», «3.10.0», «3.11.0», «3.11.1», «3.12.0», «3.13.0», «3.14.0», «3.141.0», «3.141.5», «3.141.59».

To ensure you use the right version of IE with the right version of the IE driver, please use our Capability Builder, which automatically shows you the right combinations of IE and the IE driver.

Default: Browserstack automatically selects the IE WebDriver version based on the browser version provided.

browserstack.ie.enablePopups

Use this capability to enable the popups in IE.

true, false
Default: false
browserstack.edge.enablePopups

Use this capability to enable the popups in Edge.

true, false
Default: false
browserstack.sendKeys

Set the capability to ‘True’ while using sendKeys on IE 11 browser.

true, false
Default: false
Note: Refer to the complete documentation here.

Safari capabilities:

Capability Values
browserstack.safari.enablePopups

Use this capability to enable the popups in Safari.

true, false
Default: false
browserstack.safari.allowAllCookies

Use this capability to enable all cookies in Safari.

true, false
Default: false
browserstack.safari.driver

Use this capability to specify the Safari WebDriver version.

«2.45», «2.48»
Default: 2.45

Firefox and Gecko driver capabilities:

Capability Values
browserstack.geckodriver

Use this capability to specify the version of geckodriver.

«0.10.0», «0.15.0», «0.16.0», «0.18.0», «0.19.0», «0.19.1», «0.20.0», «0.20.1», «0.21.0», «0.22.0», «0.23.0», «0.24.0»
Default: “0.10.0”

Notes:

Gecko driver v0.19.0 and above will not work on Firefox versions 55, 56 and 57 on Windows. For these versions of Firefox, we will default to Gecko driver v0.18.0.

For Selenium versions 3.0 and above, Gecko driver will be used. Each version of the Gecko driver is compatible with a specific set of Selenium versions:

Downloads

The latest version is 6000036 (12th Oct 2020)

ASP Versions

This is the standard version of browscap.ini file for IIS 5.x and greater.

This is a larger version of browscap.ini with all the new properties.

This is a smaller version of browscap.ini file containing major browsers & search engines. This file is adequate for most websites.

PHP Versions

This is a special version of browscap.ini for PHP users only!

This is a larger version of php_browscap.ini with all the new properties.


This is a smaller version of php_browscap.ini file containing major browsers & search engines. This file is adequate for most websites.

Other files (XML/CSV/JSON/ZIP)

This is the standard version of browscap.ini file in XML format.

This is an industry-standard comma-separated-values version of browscap.ini. Easily imported into Access, Excel, MySQL & others.

This is a JSON (JavaScript Object Notation) version of browscap.ini. This is usually used with JavaScript.

This archive combines all the above files into one download that is smaller than all eight files put together.

Other file versions that used to be available (property-name-docs.xml, known_agents.zip) are no longer supported.

Important Information

Using Browscap

Supported — with PHP

We only officially support using the browscap-php library. Other methods of loading the files are not supported, but we’ll do our best to help when time permits.

Other Languages

You can visit our wiki page on Using Browscap to find a library to use for your programming language. Libraries exist for Perl, Python, ASP, C#, Pascal, ColdFusion, Ruby, and Java (although none are officially supported).

Rate Limiting

Downloading the INI files here implies you agree to our fair usage policy. Any repeat attempts to download the files will be banned. We highly recommend that you request the version URL and compare your current version against the latest version before requesting the download URL.

We have implemented rate limiting and banning with the following rules:

  • You may download 30 files per 1 hour period. If you exceed this you will be temporarily banned for 1 hour.
  • You are allowed up to 5 temporary bans in a 3 day period. If you exceed this, you will be permanently banned.
  • If you are permanently banned, please contact us via the our GitHub tracker to discuss your situation.
  • Rate limiting is not applied to requests to /version or /version-number requests.

Download URLs

Previous Versions

We do not offer previous versions of the files. If you require a previous version, you must build the files yourself for the appropriate tag. Reading the Browscap wiki may help.

Missing User Agents

Please report any missing user agents on our GitHub tracker.

© Copyright 1998-2020 — Browser Capabilities Project

Asp компонент browser capabilities

Browser Capabilities Component is a web based tutorial in which users can gather idea about browser type object which is created by the browser capability component for collecting information about client side web browser. This component sends HTTP header, whenever a browser links to the web server, this browser type object detects the browser information of the client.

ASP.NET Tutorial Detect Browser Capabilities is an article in which author elaborates the procedure for detecting the visitors browser activities with the help of ASP.NET application. Here the author explains various class of HttpRequest.Browser.

Detecting Browser Capabilities in ASP.NET is a web based article in which author elaborates the method of detecting the browser capabiltity with the help of HttpBrowserCapabilities properties. In this tutorial users can learn about various.

Displaying Browser Capabilities in ASP.NET is a web based tutorial in which author describes the method of detecting browser capability in ASP.NET. Here the author explains each properties of HttpBrowserCapabilities object, which helps in.

HTTP Browser Capabilities with ASP.NET is a web based tutorial in which author explains the process of accessing and reading the visitors browsers capabilitity in ASP.NET. Here the author offers source code which executes the process of accessing.

Detecting Browser Capabilities is a web based tutorial in which author describes the method of collecting the browser information of the visitors. Here the author demonstrates detecting the browser capability and the method of accessing the.

This is an ASP based networking component that allows web users to search for registrant name for the given domain name. It retrieves those data like, registrant name, their address and email address from whois server. This whois lookup will.

This is an ASP based network component that allows network administrators or any web users who want to send and access web pages or document of HTTP via global network or through local network. It also allows them to use custom HTTP headers and.

Easy to use, ASP file upload component with progress bar indicator. Upload multiple files with size up to 2GB.

AdvZip is an ASP based compression component that provides all the functionalties for zipping and unzipping the files for all applications. This component provides various features like compressing and decompressing the files and folder, to add a.

This is an ASP.NET based component and it is an useful database tool for the users that allows them to repair the data which have error on MS Access database records. It has password protection facility for full security. Users can easily extract.

This is an ASP based network component which is used to send for DNS lookups and for traceroute. DNS lookup is used to lookup hostname using IP address and to lookup IP address using host name. Traceroute is used to deliver ICMP request to the.

PowerTCP Zip is an ASP based zip component that provide various functionalities for zipping and unzipping the files with single line of code. It has file store object which helps in transferring datas from the memory buffer to the zipping files.

jsoop (Javascript Object Oriented Programming) is a cross-browser javascript component library targeting Microsoft Internet Explorer and Mozilla. It’s inheritance tree includes basic HTML components, alignment, serialization, fieldbinding.

ASP Mail Component is ActiveX component designed to allow e-mail sending from Active Server Pages (ASP). With this component installed you can send simple text E-mail message as well as HTML e-mail with attachments and multiple recipients. Other.

For CGI application: The TBrowserType component will determine browser capabilities (Tables, JavaScript etc.) based on the UserAgent HTTP header. Compatible with the BROWSCAP.INI distributed with Microsoft’s ASP.

Webmasters can utilize this component to perform some operations on the files uploaded from a remote web browser. This component has been designed efficiently to work with the ASP applications. This component highly benefits the website owners and.

The ASPNetVideo Component Suite allows you to add video files and streaming media into your ASP.Net web forms. ASPNetVideo is unique in that:

The first commercial-grade ASP.NET component to embed Windows Media Player, QuickTime and.

ASP Thumb is Macintosh compatible. ASP Thumb is an ASP component that allows ASP application to create high-quality thumbnails. You can use this component for automated creation of image previews in your ASP applications. The component can scale.

BuilderEditor is a powerful and easy to use ASP.NET RAD component for maintaining a datasource (e.g. SQL database, dataset). It allows you to add, edit, delete and display data from a data source. It generates the data entry forms used to insert.

All files and free downloads are copyright of their respective owners. We do not provide any hacked, cracked, illegal, pirated version of scripts, codes, components downloads. All files are downloaded from the publishers website, our file servers or download mirrors. Always Virus check files downloaded from the web specially zip, rar, exe, trial, full versions etc. Download links from rapidshare, depositfiles, megaupload etc not published.

Asp компонент browser capabilities

Данные советы вводят в проблему повышения производительности работы приложений, использующих технологии Microsoft Active Server Pages (ASP) и Visual Basic Scripting Edition (VBScript). Большинство из них были многократно обсуждены и c успехом проверены на практике и будут интересны как новичкам в программировании ASP и VBScript, так и тем, кто уже имеет опыт работы с этими технологиями. При подготовке советов был использованы материалы c веб-сайта корпорации Microsoft Corp. (http://www.microsoft.com) и материалы конференций Relib.com (http://www.relib.com)

Совет 1: Кэшируйте часто используемые данные на сервере

Типичная ASP-страница получает данные из базы данных и затем выводит их в формате HTML. Независимо от скорости работы вашей базы данных, получение данных из памяти сервера будет намного быстрее, чем обработка sql-запроса к конечной базе данных. Получение данных, сохраненных на локальном жестком диске сервера, также обычно быстрее, чем получение информации из БД. Поэтому одним из основных путей увеличения скорости работы вашей ASP-страницы является кэширование часто используемой информации в памяти или на жестком диске.

Кэширование данных — это классический компромисс «место или время». Если вы избрали для кэширования правильный материал, вы можете видеть внушительное повышение производительности вашего приложения. Чтобы кэширование было эффективным нужно использовать для временного хранения только те данные, которые многократно используются для вывода и каждый раз трудоемки для повторных вычислений. Кэш, полный устаревшей информации, будет пустой тратой памяти сервера.

Данные, которые изменяются не часто, будут хорошим кандидатом для кэширования, потому что вам не надо будет волноваться относительно их синхронизации через какое-то время с конечной базой данных. Выпадающие списки (сombo-box), таблицы ссылок, пункты меню, и переменные конфигурации сайта (включая имена DSN, адреса IP и URL) — первые кандидаты для хранения в кэше. Заметьте, что вы можете кэшировать представление данных много быстрее, нежели данные сами себя. Если ASP-страница изменяется не так часто и ее временный кэш будет весьма внушительным (например, полный каталог изделий фирмы), попробуйте использовать сгенерированные HTML-страницы, чем каждый раз загружать сервер генерацией ASP-страниц.

Совет 2: Кэшируйте часто используемые данные в объектах Application или Session

Объекты Application и Session служат для хранения данных в памяти, значения которых могут быть доступны между несколькими HTTP-запросами (в отличие от обычных переменных, чьи значения доступны только в теле одной ASP-страницы). Данные объекта Session доступны только одному пользователю (в течении его сессии), в то время как данные Application доступны всем пользователям веб-сайта. Поэтому часто перед разработчиком возникает вопрос: в каком из объектов сохранять часто используемые данные. Обычно, для инициализации переменных этих объектов используются процедуры файла Global.asa — Application_OnStart() или Session_OnStart() соответственно. Если в вашем Global.asa еще нет этих процедур, то вы можете добавить их сами или инициализировать переменные, когда это будет необходимо. Примером может быть следующая процедура, использующая Application для хранения значений многократно использующейся переменной EmploymentStatusList. Процедура проверяет существование данных в EmploymentStatusList и при необходимости расчитывает их заново:

Подобную функцию можно написать для любой задачи, где не стоит каждый раз заново выполнять тродоемкий расчет. При этом могут быть сохранены данные любого формата (тип variant). Например, вы можете использовать строковые значения, целые числа, массивы или набор записей. Например:

Если полученный массив будет часто использоваться, тогда лучше хранить его сразу в виде HTML-списка, чем массив, которое каждый раз нужно преобразовывать в HTML:

Совет 3: Кэшируйте данные на диске веб-сервера

Иногда в памяти вашего веб-сервера может быть слишком большое количество данных. «Слишком много», конечно, является спорным вопросом — это зависит от того, сколько памяти вы хотите использовать, а также число элементов для кэширования и частота, с которой эти элементы будут запрашиваться. В любом случае, если вы имеете слишком большое количество данных для кэширования в памяти, подумайте о переносе кэша в текстовый или XML-файл на жесткий диск веб-сервера. Вы можете одновременно комбинировать кэширование на диске и в памяти, чтобы сформировать оптимальную стратегию для вашего сайта.

Заметьте, что при измерении производительности одиночной ASP-страницы, получение данных с диска может не всегда быть быстрее, чем получение равноценных данных из БД. Но «файловое» кэширование уменьшает загрузку БД и сети, а при высокой загрузке БД до, значительно улучшит общую производительность после. Кэширование может быть очень эффективно при кэшировании результатов сложных запросов (например, соединение таблиц), трудоемких процедур сохранения, больших наборов записей. Чтобы убедится, насколько выгодным будет это решение требуется протестировать различные схемы сохранения.

ASP и COM обеспечивают несколько инструментальных средств для создания схем кэширования на диске. Функции набора записей ADO Save() и Open() сохраняют и загружают recordset c диска. Используя эти методы вы можете переписать код из прошлого совета, заменяя запись в объект Application на метод Save() для записи в файл.

Есть несколько других компонентов, которые работают с файлами:

  • Scripting.FileSystemObject позволяет создавать, читать и записывать файл.
  • MSXML, MicrosoftR XML parser поддерживает сохранение и загрузку XML-документов.
  • Объект LookupTable (например, используемый на MSN.com) — лучший выбор для загрузки простых списков с диска.


Наконец, рассмотрите вопрос принудительного кэширования информации на диске. Сгенерированный HTML-код может быть сохранен на диске как .htm или .asp файл; гиперссылки могут указывать прямо на этот файл. Вы можете автоматизировать процесс генерации HTML, используя коммерческие инструментальные средства типа XBuilder или средства публикации в Интернет, входящие в MicrosoftR SQL ServerT. Кроме того, при помощи директивы #include можно включать отдельные HTML-части в файл ASP или читать HTML-файл с диска используя FileSystemObject. Например, на начальной странице веб-сайта Relib.com (http://www.relib.com/index.asp) приводятся 2 списка последних тем обсуждения двух дискуссионных форумов этого сайта. Отобразить эти списки можно при помощи создания двух наборов записей ADO при каждом обращении к данной странице или, следуя данному совету, сохранить их однажды в виде HTML-файла list.inc, а затем включать в index.asp:

Второй путь работает значительно быстрее.

Совет 4: Избегайте кэшировать медленные компоненты в объектах Application или Session

Несмотря на то, что кэшированиe данных в объектах Application или Session может быть хорошей идеей, кэширование COM-объектов может иметь серьезные ловушки. Занесение наиболее используемых COM-объектов в объекты Application или Session часто соблазняет, но, к сожалению, много COM-объектов, включая все, написанные в Visual Basic 6.0 или ранее, могут вызывать серьезные критические проблемы после сохранения в объектах Application или Session.

В частности, любой компонент, который выполняется медленно, вызовет критические проблемы когда кэшируется в объектах Session или Application. Быстрый (проворный non-agile) компонент — компонент, помеченный ThreadingModel=Both, который объединен Free-threaded marshaler (FTM), или — компонент, помеченный ThreadingModel=Neutral. (Neutral — новая модель в WindowsR 2000 and COM+). Следующие компоненты не проворны:

  • Free-threaded components.
  • Apartment-threaded components.
  • Single-threaded component.
  • Configured components (библиотека Microsoft Transaction Server (MTS)/COM+ и серверные приложения) не проворны пока они Neutral-threaded. Apartment-threaded components и другие не проворные компоненты хорошо работают в пределах страницы (т.е. создаются и разрушаются в пределах одной ASP-страницы).

В IIS 4.0 компонент, отмеченный ThreadingModel=Both выполняется быстро. В IIS 5.0 уже не так достаточно. Компонент не должен только быть отмечен как Both, он должен также объединен FTM.

IIS выполняет проверку компонентов, но если вы хотите ее отменить (т.е. хотите позволить непроворным компонентам быть сохраненными в объектах Application или Session), вы можете установить AspTrackThreadingModel в metabase в значение True. Но это (изменение AspTrackThreadingModel) не рекомендуется.

IIS 5.0 выдаст сообщение об ошибке, если Вы пытаетесь сохранить непроворный компонент, созданный с использованием Server.CreateObject, в объекте Application. Вы можете обойти это, используя в Global.asa, но это также не рекомендуется, поскольку это ведет к проблемам (очереди и сериализация), объясняемым ниже.

Что же все-таки неправильно если вы кэшируете непроворные компоненты? Непроворный компонент, кэшируемый в объекте Session блокирует Session от других рабочих потоков (thread) ASP. ASP обслуживает пул (контейнер) рабочих потоков, запрашиваемых другими сервисами. Обычно, новый запрос обрабатывается первым доступным потоком. Если Session блокирована, то запрос должен ждать поток, когда он станет доступным. Проведем аналогию, которая поможет понять эту ситуацию: вы идете в магазин, выбираете несколько булок, и платите за них в кассе #3. Всякий раз, после того как вы выбрали булки в том магазине, вы всегда оплачиваете их в кассе #3, даже в том случае, когда в других кассах короче очередь или даже вообще нет покупателей.

Сохранение непроворных компонентов в объект Application накладывает столь же негативный эффект на производительность. ASP создает специальный поток для выполнения меделенных компонентов в пределах Application. Это имеет два последствия: все запросы выстраиваются в очередь к этому потоку и все запросы сериализуются. Выстраивание в очередь означает, что параметры были сохранены в общедоступной области памяти; запросы переключаются к специальному потоку; метод компонента выполнен; результаты выстраиваются в общедоступную область. Сериализация (преобразование в последовательную форму) означает, что все методы выполняются в одно время. Для двух различных потоков ASP не возможно одновременное выполнение методов общедоступного компонента. Это уничтожает многопотоковость (параллелизм), особенно на мультипроцессорных системах. Хуже всего то, что все непроворные компоненты в пределах Application совместно используют один поток («Host STA»), так что негативные результаты сериализации налицо.

Смущены? Есть некоторые общие правила. Если Вы пишете объекты в Visual Basic (6.0 или ранее), не храните их в объектах Application или Session. Если вы не знаете потоковую модель объекта, не храните его в кэше. Вместо кэширования где-либо непроворных объектов, вы должны создать и удалить их на каждой странице. Объекты выполнятся непосредственно в рабочем потоке ASP и не будет никакой очереди или сериализации. Производимость будет адекватна, если COM-объекты запущены под IIS и если они не используют много времени, чтобы инициализироваться и уничтожаться. Заметьте, что однопотоковые (single-threaded) объекты не должны использоваться этот путь. Будьте внимательным — VB может создавать однопотоковые объекты! Если вы используете однопотоковые объекты, этот путь (типа таблицы Microsoft Excel) не рассчитывает на высокую производительность.

Наборы записей (recordset) ADO могут безопасно кэшироваться когда ADO отмечен как Free-threaded. Чтобы сделать ADO как Free-threaded используйте файл Makfre15.bat, который обычно зафиксирован в каталоге \\Program Files\Common Files\System\ADO.

Предупреждение: ADO не должен быть Free-threaded, если вы используете Microsoft Access в качестве БД. Набор записей ADO должен быть также вообще отсоединен, если вы не можете управлять конфигурацией ADO на вашем веб-сайте.

Совет 5: Не кэшируйте соединение БД в объектах Application или Session

Кэширование соединений ADO — обычно является плохой стратегией при разработке ASP-сайта. Если один объект Connection сохранен в объекте Application и используется на всех страницах, то все страницы будут бороться за использование этого соединения. Если объект Connection сохранен в ASP-объекте Session, то соединение БД будет создано для каждого пользователя. Это создает излишнюю загрузку веб-сервера и БД.

Вместо кэширования соединений БД, создавайте и уничтожайте объекты ADO на каждой ASP странице, которая использует ADO. Это эффективно, потому что IIS имеет встроенное подключение БД. Более точно, IIS автоматически допускает объединение подключений OLEDB и ODBC. Это гарантирует, что создание и уничтожение связей на каждой странице будут эффективны.

Так как соединенные наборы хранят ссылки на подключение БД, это следует, что вы должны не кэшировать соединенные наборы в объектах Application или Session. Однако, вы можете безопасно кэшировать отсоединенные наборы, которые не держат ссылку на подключение. Чтобы отсоединить набор записей, сделайте следующие два шага:

Совет 6: Разумное использование объекта Session

Теперь, когда в предыдущих советах были раскрыты достоинства кэширования данных в объектах Applications и Sessions, вам предлагается пытаться избегать использования объекта Session. Сессии имеют несколько ловушек когда используются на загруженных сайтах. Под «загруженными» имеются ввиду сайты с сотнями запрашиваемых страниц в секунду или тысячами пользователей одновременно. Этот совет также важен для сайтов, которые должны масштабироваться горизонтально — т.е. те сайты, которые используют несколько серверов для распределения нагрузки и обеспечения отказоустойчивости при сбоях. Для меньших сайтов, типа intranet-сайтов, преимущества применения Sessions все же перевешивают.

Обобщая, ASP автоматически создает Session для каждого пользователя, который обращается к веб-серверу. Каждая сессия занимает приблизительно 10 Кб памяти (сверх любых данных, сохраненных в Session) и немного замедляет выполнение всех запросов. Сессия остается действующей до окончания таймаута (timeout), обычно 20 мин.

Но самая большая проблема при использовании сессий — это не производительность, а расширяемость. Сессии не охватывают все задействованные веб-сервера; как только Session была создана на одном сервере ее данные остаются там. Это означает, что если вы используете сессии на мультисерверном веб-сайте, вы должны придумать стратегию для обработки запросов каждого пользователя, которые должны быть всегда направлены на сервер, на котором существует сессия этого пользователя. Это называется «застреванием» пользователя на сервере (или «липкой сессией»).

Объект Application также не охватывает все сервера: если вам нужно совместно использовать и обновлять данные Application через веб-сервера, вам нужно использовать конечную базу данных. Однако неизменяемые (read-only) данные Application все же полезны на мультисерверных сайтах.

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

Если же вы не используете Session, то убедитесь, что отключили их. Это можно сделать посредством Internet Services Manager (см. документацию по ISM). Но если вам все-таки необходимо использовать сессии, то есть несколько путей уменьшить их удары про производительности.

Вы можете переместить содержимое, которое не требует сессий (например, страницы help и т.д.) в отдельное ASP-приложение, у которого сессии выключены. Кроме того, на страницах, где объект Session не используется, применяйте следующую директиву, помещещаемую вверху страницы:

Одна из основных причин ее применения — то, что Session создает интересную проблему в случае использования фрэймов (frameset). ASP гарантирует, что в любое время будет выполняться только один запрос от Session. Это делается для того, чтобы при одновременном запросе одним пользователем нескольких страниц, только один ASP-запрос был обработан сессией, что помогает избежать проблем многопоточного доступа к объекту Session. К сожалению, в результате этого все страницы в frameset будут загружаться последовательно, а не одновременно, и пользователю придется продолжительное время ждать полной загрузки. Мораль этой истории: если вы не уверены, что с использованием фрэймов и Session ваше приложение правильно работает, то используйте:

Альтернативой использованию объекта Session являются многочисленные параметры управления Session. При передаче малых объемов данных (менее 4 Кб) обычно рекомендуется использовать Cookies, переменные QueryString и скрытые (h >Если в вашем приложении используется много функций VBScript или JScript, то зачастую производительность можно улучшить поместив этот код в откомпилированный COM-объект. Обычно откомпилированная программа выполняется значительно быстрее, чем интерпретируемый код, поэтому откомпилированные COM-объекты будут работать более эффективно, чем вызываемые методы скрипта.

Выделение (инкапсуляция) кода в COM-объект имеет следующие преимущества (не считая производительности):

  • COM-объекты хороши для логического представления структуры приложения.
  • COM-объекты позволяют многократное использование одного кода.
  • Много разработчиков находят код, написанный в VB, C++ или Visual J++ проще в отладке, чем ASP.

Но наряду с, казалось бы, неоспоримыми достоинствами COM-объекты имеют и недостатки, среди которых — время разработки и потребность в различных навыках программирования. Будьте уверены, что инкапсуляция в малых ASP-приложениях может вызвать скорее убытки, чем прибыль. Обычно это случается, когда маленькое количество ASP-кода переносится в объект COM. В этом случае накладные расходы от создания и вызова этого объекта перевешивают выгоду от использования интерпретируемой программы. Определить наиболее выигрышную комбинацию для производительности — использование сценариев ASP или COM-объектов — можно только методом проб и ошибок. Заметим, что Microsoft значительно улучшила ASP-сценарии и производительность ADO в Windows 2000/IIS 5.0 по сравнению с Windows NT 4.0/IIS 4.0. Таким образом, преимущество откомпилированного кода над кодом ASP уменьшилось с введением IIS 5.0 и ваше приложение должно работать быстрее, по сравнению с четвертой версией IIS.

Совет 8: Объявляйте переменные поздно, а удаляйте рано

Данный совет небольшой, но не менее важный в оптимизации ASP, чем все предыдущие. Суть его в следующем: лучше всего объявлять переменные только по мере необходимости и сразу удалять их, как только они становятся ненужными. Это относится и к COM-объектам и к указателям открываемых файлов и другим используемым ресурсам.

Соединения (Connection) ADO и рекордсеты — первостепенные кандидаты для этой оптимизации. Использовав recordset или сonnection для отображения данных сразу же удаляйте эти переменные из памяти, не дожидаясь конца страницы. Не позволяйте рекордсету или соединению остаться незакрытыми.

Например, если вы создаете соединение и открываете набор записей следующим образом:

то закройте их вот так:

Любые другие переменные Microsoft VBScript также лучше устанавливать в Nothing.

Совет 9: Out-of-process как компромисс между производительностью и надежностью

И ASP и MTS/COM+ имеют параметры конфигурации, которые позволяют вам выбрать альтернативу между надежностью и производительностью. Вы должны сделать разумный выбор при разработке ваших ASP-приложений.

Работа ASP-приложений может быть сконфигурирована одним из трех путей. В IIS 5.0 введен термин «уровень изоляции» (isolation level), описывающий эти пути, и который делится на три уровня — Low (низкий), Medium (средний), и High (высокий):

Low Isolation. Поддерживается во всех версиях IIS и самый быстрый. Он выполняет ASP в Inetinfo.exe, который является первичным процессом IIS. Если ASP-приложение дает сбой, то нагрузка ложится на IIS. (Чтобы перезапутить IIS под IIS 4.0 вебмастер должен был вести мониторинг сайта, используя инструменты типа InetMon, и рестартовать его командным файлом, если на сервере произошел сбой. В IIS 5.0 введена более надежная функция рестарта, которая автоматически перезапускает сервер в случае сбоя.)

Medium Isolation. Этот новый уровень, впервые введенный в IIS 5.0, называют out-of-process, т.к. ASP выполняется вне процесса IIS. В Medium Isolation все приложения ASP сконфигурированы для выполнения как среднеразделенный процесс. Это уменьшает число процессов, требуемых для загрузки нескольких ASP-приложений out-of-process. В IIS 5.0 уровень Medium Isolation установлен по-умолчанию.

High Isolation. Поддерживающийся в IIS 4.0 и IIS 5.0 уровень High Isolation также выполняется out-of-process. Если в ASP произошел сбой, то с веб-сервером ничего не случится — ASP-приложение автоматически перезапускается со следующим запросом ASP. В High Isolation, каждое ASP-приложение сконфигурировано для выполнения в собственном участке памяти, что защищает приложения ASP от друг друга (отсюда и название — «высокая изоляция»). Недостаток этого — требование раздельных процессов для каждого ASP-приложения.

Вы спросите, который уровнь лучше? В IIS 4.0 выполнение out-of-process сказывалось довольно негативно на производительности. В IIS 5.0 было проделано много работы для уменьшения последствий от запущенных out-of-process ASP-приложений. Фактически в большинстве испытаний ASP-приложения, запущенные out-of-process под IIS 5.0, выполняются быстрее, чем под IIS 4.0. Независимо от этого, Low Isolation все еще предоставляет лучшую производительность на обеих платформах. Однако, вы не увидите большой выгоды от Low Isolation, если ваш веб-сервер имеет низкую нагрузку. Поэтому, вам не стоит устанавливать этот уровень, до тех пор, пока ваш сервер не будет выполнять запросы в сотни или даже тысячи страниц в секунду. Как всегда, испытание с различными конфигурациями и определяет наиболее лучший выбор.

Заметим, что когда вы выполняете ASP-приложения out-of-process (уровни Medium или High), они выполняются в MTS под NT4 и COM+ под Windows 2000. Т.е. под NT4 они выполняются в Mtx.exe, а под Windows 2000 они выполняются в DllHost.exe. Вы можете увидеть эти процессы запустив Администратор Задач (Task Manager). Вы можете также увидеть как IIS компонует пакеты MTS или приложения COM+ для out-of-process приложений ASP.

Компоненты COM также имеют три параметра конфигурации, хотя они и не полностью аналогичны параметрам настройки ASP. Компоненты COM могут быть: «неконфигурированными» (unconfigured), настроенными как библиотечные или серверные приложения. «Неконфигурированные» — т.е. компонент не зарегистрирован с COM+. Такой компонент будет выполниться в памяти вызывающего процесса, т.е. «in-process» («в процессе»). Библиотечные приложения (Library Applications) также выполняются in-process, но имеют выгоду от сервисов COM+, включая защиту, транзакции и контекстную поддержку. Серверные приложения выполняются в собственной памяти процесса.

Вы сможете увидеть весьма небольшую выгоду неконфигурированных компонентов над библиотечными приложениями. И, вероятно, большую производительность библиотечных приложений над серверными. Это все потому, что библиотечные приложения выполняются в том же самом процессе, что и ASP, в то время как серверные приложения выполняются в их собственном процессе — межпроцессорные запросы более трудоемки, чем работа в in-process (например, при обмене данными recordset между процессами, все данные должны быть скопированы из одного процесса в другой).

Так что же все-таки использовать?

Если вам требуются конфигурации с разумными долями реализации производительности и надежности, то советуем вам следующее: под IIS 4.0 используйте Low Isolation level и MTS Server Packages, под IIS 5.0 используйте Medium Isolation level и COM+ Library Applications. Но учтите, что данный совет — очень общая рекомендация. Например, хостинговые компании обычно устанавливают Medium или High Isolation level, тогда как множество веб-серверов могут работать в Low Isolation. Так что, лучше всего попробовать самому и решить, которая конфигурация непосредственно для вас наилучшим образом выполняет ваши потребности.

Совет 10: Используйте директиву Option Explicit

Используйте директиву Option Explicit в ваших .asp файлах. Расположенная в самом верху .asp файла, она заставляет разработчика объявлять все переменные, которые он использует. Многие программисты считают, что это позволяет быстрее отлаживать приложения, исключая, таким образом, ошибки в написании имен переменных и невнимательное создание новых переменных (например, MyXLMString=. вместо MyXMLString=).

Но наиболее важно то, что работа с объявленными переменными будет быстрее, чем с необъявленными. Дело в том, что в случае необъявления переменной ссылка на нее происходит по ее имени каждый раз как она используется, тогда как после объявления доступ к переменной происходит с использованием ее уникального указателя, что значительно экономит время.

Таким образом, использование директивы Option Explicit гарантирует, что все используемые переменные объявлены и доступ к ним будет максимально быстрым.

Совет 11: Используйте локальные переменные в подпрограммах и функциях

Локальные переменные — это переменные, которые объявлены внутри подпрограмм и функций. Доступ к локальной переменной в пределах функции или подпрограммы значительно быстрее, чем доступ к такой же глобальной переменной. Также использование локальных переменных делает ваш код «чище» и понятнее, поэтому используйте их, когда Вы можете.

Совет 12: Копируйте частоиспользуемые данные в переменные

При вызове COM в ASP, вы должны копировать частоиспользуемые данные объекта в переменные ASP-скрипта. Это сократит количество запросов методов COM, которые являются относительно трудоемкими по сравнению с обращением к переменным самого скрипта. При вызове объектов Collection и Dictionary этот совет также сокращает время запросов.

Вообще, если вы пользуетесь объектом данных больше, чем однажды, поместите данные в переменную ASP-скрипта. Главной целью этой оптимизации являются переменные объекта Request (Form и QueryString). Например, на вашем веб-сайте через QueryString передается переменная UserID. Предположите, что этот UserID упомянут дюжину раз на каждой странице. Вместо вызова Request(«UserID») 12 раз, поместите этот UserID в какую-либо переменную наверху ASP страницы и затем используйте эту переменную (а не Request) внутри страницы. Это упразднит 11 COM-запросов!

На практике, доступ к свойствам или методам COM может быть обманчиво дорог. Посмотрите пример, показывающий некоторый обычный код:

Когда этот код выполняется, происходит следущее:

  1. Переменная Foo получена как глобальный объект.
  2. Переменная bar получена как член Foo. Это оказывается запросом COM-метода.
  3. Переменная blah получена как член Foo.bar. Это также оказывается запросом COM-метода.
  4. Переменная qaz получена как член foo.bar.blah. Да, это также оказывается запросом COM-метода.
  5. Вызовите Foo.bar.blah.quaz(1). Еще один запрос COM-метода. Представляете?
  6. Сделайте шаги от 1 до 3 снова, чтобы получить baz. Система не знает, изменил запрос к qaz модель объекта, так что шаги 1 до 3 должны быть выполнены снова, чтобы получить baz.
  7. Получите baz как член Foo.bar.blah.
  8. Сделайте шаги от 1 до 3 снова и получите zaq.
  9. Сделайте шаги от 1 до 3 уже в другой раз и получите abc.

Как видите это ужасно неэффективно (и медленно). Быстрый способ — написать этот код в VBScript: ,pre> Set myobj = Foo.bar.blah ‘Объявляем blah однажды! Myobj.baz = myobj.qaz(1) If Myobj.zaq = Myobj.abc Then ‘.

Если вы используете VBScript 5.0, то можете использовать выражение With:


Совет 13: Избегайте использования переопределяемых массивов

Пытайтесь избегать переопределяемых (Redim) массивов. Если ваш сервер ограничен физическим размером памяти, то намного лучше сразу установить размер массива в наибольшее значение, которое может быть, либо привести размер к оптимальному и переопределять по мере необходимости. Это, конечно, не означает, что вы должны сделать ваш массив размером в пару мегабайтов, если вы знаете, что столько вам никогда не понадобится.

Пример ниже показывает использование беспричинного использования Dim и Redim.

Есть ли в этом смысл? Гораздо было бы лучше использовать для инициализации массива изначально известный размер (в этом случае 5), чем каждый раз переопределять его. Определяя массив сразу вы будете тратить впустую небольшое количество памяти (если не все элементы массива используются), но выгодой будет скорость работы вашего скрипта.

Совет 14: Используйте буферизацию Response

Вы можете буферизировать целую страницу, включив «response buffering». Это минимизирует количество записей в браузер и, таким образом, улучшит производительность. Каждая запись имеет много непроизводительных издержек (и в самом IIS и в том количестве данных, посланных по проводам), так что меньшее количество записей будет лучше. TCP/IP работает намного более эффективно когда возможно посылать несколько больших блоков данных, чем при пересылке многочисленных маленьких блоков (из-за медленного начала процесса пересылки и сложных алгоритмов проверки).

Есть два пути использования «response buffering». Первый путь — вы можете включить response buffering для приложения, взятого в целом, используя Internet Services Manager. Это рекомендуемый подход, поэтому response buffering включен по-умолчанию для новых ASP-приложений в IIS 4.0 и IIS 5.0. Второй путь — вы можете активировать буферизацию, поместив следующую линию кода вверху ASP-страницы:

Эта линия кода должна быть выполнена прежде, чем любые данные response был записаны в браузер (т.е. прежде, чем появится любой код HTML в ASP-скрипте и прежде, чем были установлены любые Cookies, используя Response.Cookies). Вообще, лучше включить response buffering, как указано в первом случае. Это позволит вам избежать применения вышеупомянутой линии кода в каждой странице.

Есть только одна общая проблема относительно буферизации Response — то, что пользователи чувствуют ASP-страницы менее «отзывчивыми» (даже при том, что время полного получения готовой страницы получается меньше) потому что они должны ждать полную страницу, которая будет произведена прежде, чем, они начинают видеть что-нибудь. Для длинных страниц, вы можете выключить буферизацию, установив Response.Buffer = False. Однако, лучшей стратегией будет использование метода Response.Flush. Этот метод показывает весь HTML, который был записан ASP в браузер. Например, после записи 100 строк из таблицы с 1000-ю записей, ASP может вызывать Response.Flush, чтобы вынудить показать браузер уже готовые 100 строк; это позволяет пользователю увидеть первые 100 строк таблицы прежде, чем остальные строки будут будут получены.

(Заметьте, что в вышеупомянутом примере таблицы с тысячью записей некоторые браузеры не будут отображать таблицу, пока они не получат заключительный HTML-тег

. Так что проверьте ваш браузер на этот счет. Чтобы обойти эту проблему, попробуйте разделить таблицу на несколько более меньших таблиц (с меньшим количеством строк) и вызывать Response.Flush после каждой из них. Новые версии Internet Explorer отображают таблицы прежде, чем они полностью закончены и будут показывать их еще быстрее, если вы определите ширину столбцов таблицы — это поможет избежать расчетов, которые требуются браузеру для самостоятельного вычисления ширины столбцов путем измерения длины строк данных в каждой ячейке таблицы.

Другая обычная проблема с буферизацией Response — то, что она может использовать много серверной памяти при генерации очень больших страниц. Если вам необходимо генерировать такие страницы, то совет будет тем же — попробуйте сочетать буферизацию и Response.Flush.

Совет 15: Группируйте однолинейный код и выражения Response.Write

Однолинейная конструкция VBScript записывает значение «выражения» в исходящий ASP-поток. Если буферизация response не включена (см. Совет 14), то при частом использовании таких выражений, каждое из них приведет к записи данных в браузер путем передачи по сети множества маленьких пакетов, что выполняется медленно. Точно также производительность приложения снижается при частом чередовании маленьких кусочков ASP-кода и HTML. Поэтому данный совет состоит в следующем: замените рядом стоящие однолинейные конструкции одним вызовом Response.Write. Например, в следующем примере отображения таблицы БД показано необоснованно частое переключение в каждой строке между однолинейным кодом VBScript и тэгами HTML:

Ниже приводится более эффективный код, содержащийся в едином блоке VBScript и призванный ускорить отображение данных:

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

Совет 16: Используйте Response.IsClientConnected перед получением больших объемов данных

Если пользователь нетерпелив и торопится, он может отказаться от вашей просмотра ASP-страницы прежде, чем вы начнете выполнять его запрос. Если он нажал в браузере Refresh или ушел на другую страницу вашего сервера, вы получите новый запрос, стоящий в конце очереди ASP-запросов и «отсоединенный» запрос, стоящий в середине очереди. Часто это случается когда ваш сервер сильно загружен (имеет длинную очередь запросов с, соответственно, большим временем ответа) и этот новый запрос делает ситуацию еще хуже. Нет никакого смысла выполнять ASP-скрипт (особенно медленный и тяжеловесный), если пользователь больше не соединен со своим запросом. Вы можете проверить это состояние, используя свойство Response.IsClientConnected. Если оно возвращает False вы должны вызвать Response.End и отказаться от получения остальной части страницы. Фактически, IIS 5.0 использует эту практику — всякий раз, когда ASP собирается выполнять новый запрос, он проверяет, чтобы увидеть как долго запрос был в очереди. Если он был там более, чем 3 секунд, ASP проверит, соединен ли все еще клиент и немедленно закончит запрос, если нет. Вы можете использовать AspQueueConnectionTestTime, чтобы установить этот таймаут в 3 секунды.

Если вы имеете страницу, которая требует очень много времени для выполнения, вы можете проверять Response.IsClientConnected на разных стадиях выполнения. Когда буферизация активирована — хорошая идея также вызывать Response.Flush, чтобы дать понять пользователю, что что-что работает.

Обратите внимание, что в IIS 4.0 Response.IsClientConnected не будет правильно работать, если вы сначала не делаете Response.Write. Если буферизация активирована вы будете также должны делать Response.Flush. На IIS 5.0 нет никакой потребности в этом — Response.IsClientConnected работает прекрасно. В любом случае Response.IsClientConnected требует некоторых затрат времени, поэтому используйте ее только перед действием, которое требует, скажем, по крайней мере, не менее 500 миллисекунд (это большой промежуток времени, если у вас большая нагрузка на сервер). Т.е. вы должны отдавать себе отчет в действиях и не вызывать Response.IsClientConnected перед выводом каждой строки таблицы БД, гораздо лучше будет, если такая проверка будет реже, возможно, перед выводом новых 20-ти или 50-ти строк.

Совет 17: Объявляйте объекты используя тег

Если вам нужно обращаться к объектам, которые затем могут быть не использованы в коде (особенно объекты, содержащиеся в объектах Server или Application), попробуйте объявлять их в global.asa используя следующий синтакс:

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

Совет 18: Используйте объявления TypeLib для ADO и других компонентов

При использовании ADO разработчики часто включают adovbs.txt чтобы получить доступ к различным константам ADO. Этот файл должен быть включен в каждую страницу, в которой нужно использовать эти константы. Но этот файл констант достаточно большой и увеличивает время трансляции каждой ASP-страницы и размер скрипта.

В IIS 5.0 введена способность связать с библиотекой типов компонента, которая позволяет вам один раз сослаться на библиотеку типов и использовать ее на каждой ASP-странице. Причем в каждой странице не надо будет компилировать файл констант и разработчикам компонентов не надо формировать файлы VBScript #include для использования в ASP.

Чтобы обращаться к ADO TypeLib разместите одно из следующих выражений в Global.asa:

Совет 19: Пользуйтесь преимуществами клиентской проверки правильности данных

Современные браузеры имеют широко развитую поддержку XML, DHTML, java-апплетов и Remote Data Service. Пользуйтесь преимуществами этих возможностей всякий раз, когда можете. Все эти технологии помогают сократить на запросах к серверу и обратно, выполняя клиентскую проверку правильности ввода данных (например, проверку, имеет ли кредитная карта правильную контрольную сумму и т.п.). Сократив на обращениях клиент-сервер, вы снимите дополнительную нагрузку с сервера, тем самым — сократите сетевой траффик (хотя начальная страница, посланная браузеру, скорее всего будет большей), а также снизите нагрузку с любых других конечных ресурсов, к которым обращается ваш север (базы данных и пр.). Кроме того, пользователю не надо будет ждать новую страницу с сообщением об ошибке и предложением вернуться назад. Однако все это не означает, что вам надо просто перенести всю вашу проверку с сервера на клиента, нет. Вы должны всегда делать проверку вводимых данных на сервере, потому что она поможет защитить против хакеров или браузеров, которые не поддерживают ваши клиентские процедуры проверки.

Много было сделано для создания HTML, «независимого от браузера». Это часто препятствует разработчику при извлечении выгоды от популярных особенностей браузеров, которые могли бы приносить пользу. Для высокопроизводительных веб-сайтов, которые беспокоятся о «досягаемости» для браузеров, хорошей стратегией будет оптимизация страниц под наиболее популярные программы просмотра. Особенности браузера могут быть легко обнаружены в ASP используя Browser Capabilities Component («компонент возможностей браузера»). Инструментальные средства типа Microsoft FrontPage могут помочь вам при проектировании кода, который будет работать с теми браузерами и версиями HTML, которые вы хотите.

Совет 20: Избегайте конкатенации строк в циклах

Множество программистов делают образование строк в циклах следующим образом:

В таком подходе есть несколько проблем. Во-первых, неоднократная конкатенация (соединение) строк берет квадратичное время или если сказать менее формально, то — время, которое потребуется на выполнение цикла, пропорционально квадрату количества записей к числу полей. Более простой пример сделает это более понятным.

На первом шаге цикла вы получаете одиносимвольную строку «A». Во второй раз VBScript должен перераспределить строку и скопировать два символа («AB») в s. На третьем шаге нужно перераспределить s снова и скопировать три символа в s. На шаге N (26), нужно перераспределить и скопировать N символов в s. Итого — общее количество 1+2+3+. +N, т.е. N*(N+1)/2 копирований.

Если предположить, что в первом примере было 100 записей и 5 полей, то внутренний цикл будут выполнен 100*5 = 500 раз и время, которое потребуется для копирования и перераспределения строк будет пропорционально 500*500 = 250000, что будет довольно много для копирования набора записей скромных размеров.

В этом примере код мог бы быть улучшен заменой конкатенации строк с Response.Write() или однолинейным скриптом ( ). Если буферизация response включена (как это должно быть), это будет быстро, как Response.Write только добавляет данные к концу буфера response. Никакое перераспределение не выполняется и это очень эффективно.

В отдельных случаях преобразования ADO-рекордсета в HTML-таблицу можно попробовать использование GetRows или GetString.

Если вы соединяете строки в JScript, то там строго рекомендуется использование оператора «+=»; т.е. используйте s += «строка», а не s = s + «строка».

Совет 21: Используйте кэширование страниц в браузере и proxy-сервере

По умолчанию в ASP отключено кэширование в веб-браузере и proxy. Смысл этого заключается в том, что ASP-страница — по своей природе динамическая и обычно содержит информацию, которая изменяется со временем. Если ваша страница содержит постоянные данные и не требует регенерации при каждом запросе, то вы должны включить кэширование для браузера и прокси. Это позволит браузерам использовать «кэшируемую» копию страницы в течение некоторого отрезка времени, которым вы можете управлять. Кэширование может значительно снизить нагрузку на вашем сервере.

Какие из динамических страниц могут быть кандидатами на кэширование? Вот некоторые примеры:

  • Страница с прогнозом погоды, где информация обновляется каждые 5 минут.
  • Начальная страница сайта, которая содержит список материалов на сервере или официальные сообщения для печати, которые модифицируются два раза в день.
  • Другие подобные страницы, где обновления происходят раз в несколько часов.

Заметьте, что с кэшированием в браузере или кэшированием proxy, вы получите меньшее количество хитов, зарегистрированных на вашем сервере. Поэтому, если вы хотите точно измерять количество просмотров страниц или количество показов баннеров, то скорее, всего вы не захотите воспользоваться кэшированием.

Кэширование в браузере управляется свойством «Expires» HTTP-запроса, который посылает веб-сервер браузеру. ASP обеспечивает два простых механизма, чтобы установить это свойство. Чтобы заставить страницу «устареть» через несколько минут — установите свойство Response.Expires. Следующий пример сообщает браузеру, что содержание данной страницы истекает через 10 минут:

Установка Response.Expires в отрицательное значение или 0 отключает кэширование. Использование большого отрицательного числа, например -1000 (немного больше, чем 1 день) будет лучше, в силу несоответствий между временем на сервере и в браузере. Второе свойство Response.ExpiresAbsolute позволяет вам устанавливать точное время, в течении которого содержание «устареет»:

Вместо использования объекта Response для того, чтобы установить истечение срока действия страницы, вы можете использовать HTML-тэг . Большинство браузеров «понимают» эту директиву, хотя proxy ее не используют.

Наконец, вы можете указывать является ли содержание допустимым для кэширования HTTP-proxy используя свойство Response.CacheControl. Установив это свойство в значение «Public» вы разрешите proxy кэшировать содержание страницы.

По умолчанию это свойство всегда установлено в «Private». Обратите внимание, что вы не должны разрешать кэширование для proxy страниц, которые показывают данные, специфичные для каждого пользователя, поскольку в этом случае proxy может показывать страницы пользователям с информацией других.

Совет 22: Используйте Server.Transfer вместо Response.Redirect

Метод Response.Redirect сообщает браузеру запросить другую страницу. Этот метод часто используется, чтобы переназначить запрос пользователя, например, к странице идентификации (login) или странице с сообщением об ошибке. Redirect вынуждает сделать новый запрос страницы, результат этого — то, что браузер должен сделать два запроса к веб-серверу и веб-сервер должен обработать дополнительный запрос. В новой версии IIS 5.0 введена новая функция Server.Transfer, которая передает выполнение другой ASP-странице на том же самом сервере. Это помогает избежать дополнительного запроса «браузер-сервер» и в общем и целом приводит к улучшению производительности системы, а также к более короткому времени редиректа и отображения страницы в браузере пользователя.

Следующий скрипт демонстрирует использование Server.Transfer для переназначения запроса в зависимости от значения переменной:

Server.Transfer посылает запрос из одного выполняемого ASP-файла к другому файлу. В течении редиректа выполнение первоначально запрошенного ASP-файла немедленно прекращается без очистки буфера вывода.

Совет 23: Используйте замыкающий слэш в URL каталогов

Этот совет относится не только к ASP-программистам, но и ко всем веб-разработчикам, кто в своей работе создает html-страницы.

Проверьте, всегда ли вы используете замыкающий слэш (trailing slash) — наклонную черту вправо (/) в URL каталогов веб-сайта. Если опустить этот слэш браузер будет делать запрос к серверу, только для того, чтобы сообщить, что он спрашивает о каталоге. Затем браузер будет делать второй запрос, но уже со слэшем на конце URL, и только тогда веб-сервер будет возвращать «главный» (default) документ этого каталога или выдавать список файлов каталога, если в нем нет главного документа и разрешен просмотр каталога. Добавление к URL замыкающего слэша позволяет избежать первого бесполезного запроса к веб-серверу, что, естественно, экономит время, которое требуется для перехода по ссылке. Чтобы подобная ссылка выглядела более приятнее вы можете опустить слэш в названии URL.

Этот совет также относится и к записи ссылок на главную страницу веб-сайта. Используйте

Совет 24: Избегайте использования серверных переменных

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

Также пытайтесь избегать неопределенных вызовов объекта Request (например, Request(«Данные»)). Для элементов, находящихся не в Request.Cookies, Request.Form, Request.QueryString или Request.ClientCertificate, имеется неявный запрос к Request.ServerVariables. Запрос к коллекции Request.ServerVariablesе выполняется намного медленнее, чем доступ к другим коллекциям.

Совет 25: Сделайте upgrade системного программного обеспечения

Системные компоненты постоянно обновляются, поэтому рекомендуется, чтобы вы модернизировали (сделали upgrade) к самой последней версии. Лучше всего установить Windows 2000 (и следовательно, IIS 5.0, ADO 2.5, MSXML 2.5, Internet Explorer 5.0, VBScript 5.1 и JScript 5.1). IIS 5.0 и ADO 2.5 позволяют достичь значительного повышения производительности ваших приложений на мультипроцессорных системах. На серверах под управлением ОС Windows 2000 ASP может респределять нагрузку одновременно на четыре процессора и больше, принимая во внимание, что в предыдущей версии — под IIS 4.0, ASP не делал такого распределения и на два процессора. Насколько много вы используете скриптового кода и ADO в ASP-страницах вашего сайта, настолько больше повышения производительности вы должны увидеть после модернизации к Windows 2000.

Если вы не можете установить Windows 2000 сейчас, вы можете модернизировать ваше системное программное обеспечение к самым последним версиям SQL Server, ADO, VBScript и JScript, MSXML, Internet Explorer и пакета обновления NT 4 (Service Pack). Каждое из перечисленного позволяет улучшить выполнение работы и увеличить надежность.

Asp компонент browser capabilities

The browscap.ini file (called libchilicap.ini on UNIX) contains information about each known browser. It is a standard text file that lists the features a browser supports. The browscap.ini file maps browser capabilities to the HTTP User Agent header.

Be sure to keep your browscap.ini or libchilicap.ini file up to date. When new browsers are released their capabilities are unknown to the current file, and pages that rely on browser detection may fail. You can obtain updates to browscap.ini at:

To use the browscap.ini file on UNIX, you must convert the text file to UNIX format and rename it «libchilicap.ini.» You should rename your existing libchilicap.ini file «libchilicap.old» before installing the updated version.

You can also maintain the browscap.ini file by editing it. A default section of the browscap.ini file is used when the browser details don’t match any of the ones specified. If the browser in use doesn’t match any in the browscap.ini file, and no default browser settings are specified, all properties are set as » UNKNOWN .»

Note The browscap.ini or libchilicap.ini file must be in the same directory as browscap.dll or libchilicap.so.
To use the Browser Capabilities component, it is necessary to create an instance of it and refer to its properties. To avoid having the browscap.ini file accessed every time, read the value once and assign it to a variable:

In this section:

Copyright © 2003 Sun Microsystems, Inc. All rights reserved.

Илон Маск рекомендует:  Int 33h работа с мышью
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL