Asp оптимизация сценариев asp


Содержание

Полезные советы по оптимизации ASP-приложений

Введение

Производительность — это особенность приложения. Вам нужно думать о производительности сразу при проектировании приложения, иначе вы будете переписывать ваш исходный код позже.

Публикуемый ниже материал представляет собой первый совет из целой серии советов по оптимизации приложений, использующих технологии ASP и Visual Basic Scripting Edition (VBScript). Большинство из них были многократно обсуждены и c успехом проверены на веб-сайте Microsoft Corporation и других ASP-сайтах. Авторы материала подразумевают, что вы уже знакомы с основами разработки ASP-приложений, включая VBScript и/или JScript, ASP-сессиями и др. важными объектами (Request, Response и Server).

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

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

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

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

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

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

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

‘Сохранить значение recordset в виде массива

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

‘Сохранить значение recordset в виде HTML-списка

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

Иногда в памяти вашего веб-сервера может быть слишком большое количество данных. «Слишком много», конечно, является спорным вопросом — это зависит от того, сколько памяти вы хотите использовать, а также число элементов для кэширования и частота, с которой эти элементы будут запрашиваться. В любом случае, если вы имеете слишком большое количество данных для кэширования в памяти, подумайте о переносе кэша в текстовый или 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. Например, на начальной странице vbCode (http://vbcity.com/vbcode/ru/home.asp) приводятся 10 последних тем обсуждения двух дискуссионных форумов. Отобразить эти списки можно при помощи создания двух наборов записей ADO при каждом обращении к данной странице или, следуя данному совету, сохранить их однажды в виде HTML-файла list.inc, а затем включать в home.asp:

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

Избегайте кэшировать медленные компоненты в объектах 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 FilesCommon FilesSystemADO.

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

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

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

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

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

Set rs = Server . CreateObject ( «ADODB.RecordSet» )
rs . CursorLocation = adUseClient ‘ шаг 1

‘ Заполните recordset с данными
rs . Open strQuery , strProv

‘ Теперь отсоедините recordset от источника данных
rs.ActiveConnection = Nothing ‘ шаг 2

Подробную информацию относительно подключений смотрите в справочниках по ADO и SQL Server.

Разумное использование объекта 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 и скрытые (hidden) переменные форм. При использовании большого количества передаваемых параметров (например, корзина произведенных заказов в он-лайн магазине) наиболее лучший выбор — конечная база данных.

Asp оптимизация сценариев asp

В этом разделе приводятся пошаговые руководства, вводящие в концепцию веб-разработки в ASP.NET. Эти пошаговые руководства также описывают возможности веб-разработки в Visual Studio 2010 and Visual Web Developer 2010, экспресс-выпуск (обозначаются термином Visual Studio).

В дополнение к этим пошаговым руководствам большинство разделов в документации Visual Studio включают примеры, иллюстрирующие ключевые возможности.

В этом разделе содержатся следующие подразделы.

В следующей таблице приведены пошаговые руководства, дающие вводные сведения по ASP.NET и Visual Studio, которые будут полезны в частности тем, кто ранее не занимался разработкой в ASP.NET.

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

Использование Visual Studio для создания веб-сайта ASP.NET, содержащего простую страницу. С помощью этого руководства можно изучить процесс создания нового проекта веб-сайта ASP.NET, порядок планирования проектов, добавления страниц и тестирования веб-сайта.

Показывает использование редактора кода. Некоторые из функций редактора кода зависят от используемого языка программирования. Таким образом, в данном пошаговом руководстве создаются две страницы, одна с помощью Visual Basic, а другая с помощью C#.

Показывает процесс создания веб-страниц в Visual Studio. Оно поможет создать простую страницу, проиллюстрирует базовые методы создания новой страницы, добавления элементов управления и написания кода.

Показывает процесс добавления разметки на страницу с помощью фрагментов кода. Можно использовать фрагменты кода HTML в Visual Studio для экономии времени и сокращения объема вводимого кода.

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

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

Показывает кэширование данных приложения в приложении ASP.NET. Использует API кэширования, доступный в пространстве имен System.Runtime.Caching .

Отладчик Visual Studio помогает обнаружить ошибки в коде. Трассировка ASP.NET позволяет отображать этапы обработки, возникающие при выполнении страницы.

Структура MVC ASP.NET предоставляет расширенную поддержку модульного тестирования и разработки на основе тестирования.

Показывает использование отладчика Visual Studio для работы с веб-страницами ASP.NET.

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

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


Показывает процедуру добавления на страницу элемента управления «меню» и использования его как средства навигации.

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

Показывает процесс разработки URL-адресов, которые содержат важные сведения для пользователей и способствуют оптимизации поисковой подсистемы (SEO).

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

Описывает основные возможности Visual Studio для работы с таблицами каскадных стилей (CSS). В этом пошаговом руководстве проходится путь создания макета страницы с тремя столбцами, сопровождаемый описанием основных методов создания новой веб-страницы и новой таблицы стилей.

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

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

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

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

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

Показывает использование элементов управления Image , элементов управления Menu и функции ASP.NET AutoPostBack в целях соответствия стандартам специальных возможностей.

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

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

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

Показывает использование элементов управления Label , элементов управления проверки и элементов управления Panel (элементов div ) в форме ввода в целях соответствия стандартам специальных возможностей.

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

Показывает использование встроенного шаблона проекта веб-сайта ASP.NET для создания веб-сайта с базовой функцией входа пользователей.

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

Показывает, как назначать роли пользователям и как создавать правила (разрешения), предоставляющие или запрещающие различным ролям доступ к страницам. Также в нем описывается проверка принадлежности пользователей к той или иной роли, а также определение текущих ролей пользователя.

Показывает процедуру добавления свойств профиля на веб-сайт, который позволяет создавать персональные возможности для посетителей и отслеживать сведения по отдельным пользователям.

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

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

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

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

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

Показывает способы отображения и обновления данных в элементе управления ListView . В данном пошаговом руководстве элемент управления SqlDataSource используется для извлечения результатов из базы данных SQL Server и для управления обновлениями.

Показывает использование функциональных возможностей встроенной сортировки элемента управления ASP.NET GridView для добавления к отображаемым данным сортировки по одному столбцу без написания программного кода.

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

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

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

Показывает использование элемента управления ASP.NET QueryExtender в разметке веб-страницы для фильтрации данных только с помощью декларативного синтаксиса.

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

Архитектурный шаблон «модель-представление-контроллер» (MVC) разделяет приложение на три основных компонента: модель (данные), представление (пользовательский интерфейс) и контроллер (бизнес-логика и доменная логика). Структура ASP.NET MVC является облегченной структурой представления с широкими возможностями тестирования, интегрированной с функциями ASP.NET, например с главными страницами и проверкой подлинности на основе членства.

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

Показывает использование заметок данных для проверки данных.

Показывает порядок добавления обработки, выполняемой на стороне клиента, в представления приложения MVC.

Показывает создание проекта MVC с несколькими областями.

Показывает использование методов асинхронного контроллера.

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

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

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

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

Описание способов обеспечения динамической функциональности в элементах управления ASP.NET с привязкой к данным без использования функции формирования шаблонов платформы динамических данных.

Показывает способы настройки отображения данных из полей данных платформой динамических данных.

Показывает способы настройки отображения данных из таблицы платформой динамических данных.

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

Показывает способы реализации наследования по принципу «одна таблица на иерархию» путем изменения концептуальной модели в модели EDM.

Технология Microsoft Ajax позволяет быстро создавать веб-страницы, содержащие широкий набор средств взаимодействия пользователей с хорошо знакомыми элементами пользовательского интерфейса. Технология Microsoft Ajax содержит библиотеки клиентских скриптов, включающих не зависящий от браузера скрипт ECMAScript (JavaScript) и технологии динамического HTML (DHTML). С помощью возможностей Microsoft Ajax можно улучшить работу пользователей и повысить эффективность веб-приложений.

В следующих пошаговых руководствах рассматривается усовершенствование серверных приложений веб-форм ASP.NET с помощью технологии Ajax.

Показывает использование некоторых функций технологии Microsoft Ajax, которые включаются при установке Visual Studio.

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

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

Показывает процесс включения файла JavaScript в сборку в качестве внедренного ресурса.

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

Показывает способ включения локализованных ресурсов в файл ECMAScript (JavaScript).

Показывает настройку свойства ClientID элемента управления, чтобы можно было написать клиентский скрипт, который получает доступ к элементам управления ASP.NET в пользовательском элементе управления.

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

Примечание

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

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

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

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

Показывает использование команды Windows XCOPY для копирования файлов из проекта веб-сайта на веб-сайт. (Не применяется к проектам веб-приложений.)

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

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

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

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

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

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

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

Показывает создание и компиляцию пользовательского серверного элемента управления ASP.NET, а также его использование на странице.


Показывает создание обработчика HTTP-данных, позволяющего создавать пользовательские динамические выходные данные, отличные от веб-страницы, например RSS-каналы.

Показывает основные функциональные возможности пользовательского HTTP-модуля. HTTP-модуль вызывается при каждом запросе и позволяет настроить обработку запроса.

Исследование производительности ASP.NET-приложений

Рубрика: 1. Информатика и кибернетика

Дата публикации: 03.07.2020

Статья просмотрена: 54 раза

Библиографическое описание:

Яськов А. Д. Исследование производительности ASP.NET-приложений [Текст] // Технические науки: проблемы и перспективы: материалы V Междунар. науч. конф. (г. Санкт-Петербург, июль 2020 г.). — СПб.: Свое издательство, 2020. — С. 22-25. — URL https://moluch.ru/conf/tech/archive/231/12744/ (дата обращения: 12.11.2020).

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

Ключевые слова: ASP.NET, производительность, веб-приложение, быстродействие

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

ASP.NET представляет из себя часть технологии.NET, предназначенную для создания динамических HTML-страниц. Она позволяет писать мощные клиент-серверные веб-приложения. ASP.NET возникла в результате объединения более старой технологии ASP (active server pages) и.NET Framework. В ней содержатся готовые элементы управления, позволяющие быстро и качественно создавать готовые интерактивные интернет-сайты. Ключевое слово здесь — быстро. Также имеется возможность использовать сервисы других сайтов максимально понятно и прозрачно для пользователей.

Производительность любого веб-приложения можно рассматривать с двух сторон: с точки зрения конечного пользователя и с точки зрения сервера (или разработчика).

В первом случае пользователя интересует скорость реакции на его запрос, то есть время отклика приложения. Остальное его не интересует. При относительно малом времени отклика пользователя не будет возникать других вопросов к приложению, касающихся его производительности [1].

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

Подходы к повышению производительности можно условно разделить на три группы: уменьшение времени обработки страницы на стороне клиента, на стороне сервера и уменьшение объема передаваемых данных [2].

Чтобы уменьшить время обработки страницы на стороне клиента нужно придерживаться некоторых правил:

− Максимально использовать таблицы стилей CSS.

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

− Максимально оптимизировать HTML.

− Максимально оптимизировать JavaScript. Соблюдение последних двух условий может позволить добиться существенного прироста в скорости загрузки страницы.

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

Уменьшение объема передаваемых данных:

− Использование HTTP-сжатия. Это самое простое правило, так как для его соблюдения чаще всего не требуется дополнительных затрат времени. Большая часть современных браузеров и серверов поддерживает эту технологию, поэтому было бы не лишним ее использовать для уменьшения объема передаваемых от клиента к серверу и обратно данных.

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

− Использование SSL только там, где это действительно необходимо. Любое шифрование почти всегда повышает объем передаваемых данных. Зачастую оно используется там, где не приносит пользы. Многие страницы и приложения не содержат никакой конфиденциальной или другой информации, которую следовало бы шифровать. Хотя во многих других случаях использование SSL оправданно. Необходимо стремиться к тому, чтобы шифрование применялось только в последних случаях.

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

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

Существуют и другие правила, но здесь рассматриваются только самые основные, которые следует помнить в первую очередь.

Уменьшение времени обработки страницы на стороне сервера:

Здесь правил больше всего, и их выполнение особенно важно, так как время обработки запроса сервером часто превышает время на других этапах работы веб-приложения [3].

− Максимальная оптимизация кода и использования ресурсов. Здесь комментарии не требуются. Чем быстрее будет происходить обработка запроса на сервере, там быстрее ответ будет приходить к клиенту.

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

− Отключение неиспользуемых HTTPModule

− Оптимизация конфигурации ASP.NET. В большинстве случаев использования ASP.NET файлам конфигурации не уделяют должного внимания. Стандартная конфигурация ASP.NET универсальна — она удовлетворяет большинству требований, то в каждом конкретном отдельно взятом случае она не является оптимальной. Конфигурацию следует подстраивать уникально, в зависимости от функций.

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

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

− Кэширование. Последние три свойства являются основными в этой группе. Кэширование — одно из них. В самом простом случае оно подразумевает сохранение копии данных на определенное время на стороне клиента. Это позволяет при большинстве запросов не выполнять загрузку данных с сервера по линии соединения, а загружать ее из кэша, что существенно снижает нагрузку на соединение. Все изменения, которые производятся со страницей, сохраняются именно в этой копии у клиента. Чаще всего кэширование производится на заданной временной промежуток. В этом случае первая операция, обращенная к странице, произошедшая по истечении этого промежутка времени, уже действительно загрузит страницу по сети, тем самым обновив ее копию в кэше, а все предыдущие операции будут работать лишь с этой копией. Причем в ASP.NET реализованы так называемые профили кэширования. Они позволяют заранее создать в файле web.config настройки кэширования, такие как время хранения копии и другие параметры, а затем лишь обращаться к этим профилям, не обозначая всех параметров. Однако, при использовании кэширования следует помнить об одном важном моменте. При использовании копии данных, сохраненных на стороне клиента, можно добиться повышения скорости работы веб-приложения, но, как только будет превышено определенное количество данных, хранящихся в кэше, произойдет серьезное падение производительности, так как память клиента имеет физические ограничения, и хранить на ней данных в полном объеме не получится. Поэтому при использовании кэширования следует соблюдать баланс между общим объемом информации и той частью, которая сохраняется в кэше клиента.

− Асинхронность. На веб-сервере платформы.NET Framework поддерживается пул потоков, которые используются для обслуживания запросов ASP.NET. При получении запроса, для его обработки из этого пула выделяется поток (thread). Если запрос обрабатывается синхронно, то поток, который обрабатывает запрос, блокируется на время обработки запроса. Такой поток не может обслуживать другой запрос. Это может не составлять проблемы, так как пул потоков можно сделать достаточно большим для вмещения множества заблокированных потоков. Однако, количество потоков в пуле ограничено. В больших приложениях, которые обрабатывают несколько одновременных запросов, которые выполняются длительное время, все доступные потоки могут быть заблокированы. Такая ситуация называется нехваткой потоков. При наступлении этой ситуации веб-сервер помещает запросы в очередь. После заполнения очереди запросов веб-сервер отклоняет запросы, возвращая код ошибки HTTP 503 (сервер перегружен). В приложениях, в которых может возникнуть нехватка потоков, можно настроить действия, которые обрабатываются асинхронно. Асинхронный запрос обрабатывается такое же количество времени, что и синхронный запрос. Например, если запрос выполняет сетевой вызов, который требует две секунды для выполнения, запрос будет обрабатываться две секунды, независимо от того, выполнен он синхронным или асинхронным способом. Однако, при асинхронном вызове сервер не заблокирован для ответов на другие запросы во время ожидания выполнения первого запроса. Поэтому асинхронные запросы предупреждают постановку запросов в очередь в ситуации, когда существует множество запросов, которые вызывают длительные по времени операции.

− Многопоточность. Это свойство позволяет достаточно просто и производительно реализовать процессы, не связанные с пользовательским интерфейсом, или требующие запуска по расписанию. Без использования многопоточности эти операции приводят к блокированию пользовательского интерфейса. Например, это может быть обращение к какому-то серверу в сети. В этом случае пользователю придется дожидаться момента, когда от этого сервера вернется ответ. Только тогда он сможет продолжить работа с приложением. Разумнее было бы предоставить в это время пользователю возможность выполнять какие-то другие действия или вообще отменить этот запрос. В любой ситуации, когда требуется ожидание, будь то запрос к базе данных, файлу или сети, может запускаться новый поток, позволяющий в это время решать другие задачи. Это и есть многопоточность. Она может быть реализована через обработку потоков одного и того же запроса разными процессорами или, что бывает чаще, разными ядрами одного процессора. При этом могут возникать определенные проблемы. Например, в случае, когда разные потоки пытаются одновременно получить доступ к одним и тем же данным. Поэтому при использовании многопоточности следует помнить о механизмах синхронизации потоков. В этом случае многопоточность оправдана и способна принести очень существенный вклад в повышение производительности приложения [4].

Оптимизация работы поисковой системы при помощи ASP.NET 4.0, Visual Studio 2010 и IIS7

Скотт Ален (Scott Allen)

Любой пользователь с открытого веб-узла знает, что поисковых играют ключевую роль в перенос посетителей узла.Важно рассматривать поисковые системы и ранг высокой в их результаты запроса.Выше ранжирование может перевести более посетителей, может привести к более своим клиентам и высокий доход рекламного объявления.Механизм оптимизации поиска (SEO) является практика тонкой узел для достижения более ранжирование результатов поиска.В этой статье мы вам взгляните на SEO рекомендации, можно применять при использовании с новейшими технологиями Майкрософт.

Основы SEO

Существуют многие факторы в воспроизведение, когда механизм поиска автоматически формирует относительный ранг узла и некоторые более важные факторы не являются прямого управления версиями.Например мы знаем, поисковые хотели увидеть Входящие ссылки на веб-узла.Входящие ссылки представляет собой гиперссылку на вне домена, который указывает в свой домен.Когда механизм поиска видит многие Входящие ссылки на узел, предполагается узел имеет содержимое интересные и важные и соответствующим образом ранжирует веб-узла.Это явление, используя технические термины описывает сообщества SEO как «установить связь сок»и «связать любовь.» Более «связи сок»обладает веб-узла, тем выше веб-узел будет отображаться в результаты поиска.

Если узел является интересным, затем остальная часть мира естественным образом запустится Добавление ссылок в веб-узла.Поскольку Visual Studio не поставляются с» создать Мой узел другие интересующих»кнопки, в конечном счете придется жесткого работают на предоставление link-worthy содержимого для веб-узла.

После очень содержимого в месте, вы захотите убедитесь, что средства поиска можно найти и обрабатывать содержимое.Мы не знаем точное алгоритмов, используемых поисковыми Bing.com и Google.Большинство поисковых опубликовали правила разработки и содержимое, можно выполнить помогают повысить ранжирование вашего.Сообщество Интернета также компилируется широкий объем знания, полученные через экспериментирования проб и ошибок.

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

Быстрый и допустимые HTML

Visual Studio имеет длинное журнал WYSIWYG разработки для рабочего стола и веб-узла.Конструктор форм Web позволяет перетаскивание серверных элементов управления на поверхности разработки и задания значений для элементов управления в окне «Свойства».Можно быстро создать веб-страницы без видеть HTML.Если уделяется HTML тем не менее, вы захотите работать в окне представления исходного кода.Хорошая новость состоит в представлении источника можно работать без потери скорости или точность в Visual Studio 2010.

Visual Studio 2010 будет поставлять с числом фрагментов кода HTML IntelliSense для создания общих тегов HTML и серверных элементов управления с использованием минимального числа нажатий клавиш.Например, при работе в представлении источника ASPX-файла введите img и нажмите клавишу TAB для создания разметки, показанной на рис. 1.Только для четырех нажатий клавиш дать вам более 20 символов, необходимых!

Обратите внимание, как в редакторе выделяются значения src и alt на рис. 1.При использовании фрагментов кода, вкладке между выделенной области и начните ввод перезаписать значения внутри.Данное средство является другой производительность премии, сохраняющего усилия переход к правильной курсор и вручную удалить существующее значение.

Проекты ASP.NET Web Forms и ASP.NET MVC, будет иметь фрагменты HTML в Visual Studio 2010, чтобы создать все из ActionLinks объявления DOCTYPE XHTML.Фрагменты являются расширяемый, настраиваемый и зависимости же ядро фрагмент, был доступен с момента Visual Studio 2005.Прочитайте статью Лорензо Миноре в MSDN, в которой вы найдете дополнительные сведения о фрагментах (msdn.microsoft.com/en-us/magazine/cc188694.aspx).

Рис. 2 Параметры проверки

Проверка

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

Поскольку существуют различные версии спецификации HTML, каждая страница доставить из приложения должен включать элемент DOCTYPE.Элемент DOCTYPE указывает версию с помощью страницы HTML.Веб-обозреватели, поисковые системы и другие средства рассмотрим DOCTYPE, чтобы они знали способ интерпретации разметки.Visual Studio будет поместить DOCTYPE в правильное расположение при создании новых веб-формы страниц и главных страниц.По умолчанию DOCTPYE, как показано в следующем фрагменте кода указывает на страницу будет соответствовать спецификации XHTML 1.0:

Хотя не требуется знать все незначительные различия между спецификации HTML, необходимо знать, если на странице соответствует определенным DOCTYPE. Visual Studio включены функции проверки HTML с момента выпуска 2005 и проверки по умолчанию включен. Могут управлять параметрами проверки и проверки целевой тип, переход к средства | параметры | текстовый редактор | HTML | параметры проверки, как показано на рис. 2).

В «в качестве предупреждения»параметр означает проблемы проверки HTML не остановить построение, но будут отображаться как предупреждения в окне ошибок Visual Studio. В представлении источника для веб-форм текстовый редактор будет привлечь внимание к ошибок проверки HTML с помощью волнистыми линиями. Мышь, над элементом, чтобы увидеть точное сообщение об ошибке, как илюстрировано на рис. 3.

Описательные HTML

Тег img на рис. 3 является хорошим примером как необходимо думать как механизм поиска. Как БЫЛО сказано ранее, механизм поиска не см или интерпретации фигур и слов в изображение, но мы с помощью атрибута alt механизм поиска помогут некоторые дополнительные сведения о графического содержимого. Если изображение является логотип компании, замещающий текст может быть «эмблему»но он будет лучше включить название фирмы, в эмблему замещающий текст. Механизм поиска будет использовать замещающий текст как другой ключ в понимании темы и суть страницы.

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

Если снова взглянуть на заголовки, выбранные для данной статьи, вы увидите, они вращаются вокруг фразы как «Допустимые HTML»«Основы SEO»и т д.. Они все описания фразы, даст чтения и механизм поиска хорошим является о статье.

Описательные названия и метаданных

Другой важной области описательные ключевые слова находится внутри тег head. Здесь отображается раздел head из одной из страниц в соответствующий код для загрузки:

Слова внутри тега заголовка страницы сильно взвешенное, поэтому необходимо выбрать удачных наименований. Тег head также можно заключить теги meta. Вы захотите использовать два тега МЕТА для работы SEO—один набор связанных ключевых слов на страницу и один для установки на страницу описания. Посетители обычно не увидят эти сведения метаданных, но некоторых поисковых отобразить описание метаданных страницы в результатах поиска. Ключевые слова метаданных являются другое место объявления реальной понятие страницы по подкормки важные слова ядро сопоставить страницы поиска.

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

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

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

Другой практического занятия, чтобы избежать обслуживает различное содержимое поисковой системой crawler, чем бы служат для регулярных посетителей. Некоторые узлы будут этого перехват заголовок агента пользователя или IP-адрес входящего запроса. Хотя может быть возможность представить некоторые полезные возможности для данного типа поведения, слишком много узлов использовался этот метод, чтобы скрыть известных вредоносных программ и фишинга содержимого из поисковых. Если механизм поиска определяет поведение (известная как Маскировка), вы будете penalized. Оставаться честными, предоставляют хороший содержимое и не пытайтесь игры или управлять ядро результаты поиска.

Можно просмотреть использование свойств заголовка и MetaKeywords MetaDescription на страницу во время события Page_Load. Свойство Title начиная с версии 2.0 был в ASP.NET, но MetaKeywords и MetaDescription появились в ASP.NET 4.0. Хотя мы по-прежнему используется жестко запрограммированных строк, значения этих свойств удалось загрузить из любого источника данных. Затем можно разрешить другому ответственному за маркетинг подправить метаданных для лучших результатов поиска обработчик веб-узла и их необходимость редактировать исходный код для страницы.


Хотя эффективных ключевых слов и описания может дать вам чуть края в ядро результатах поиска содержимого, по-прежнему короля. Мы вернусь чтобы увидеть дополнительные советы по HTML далее в этой статье, но в следующий ряд разделов будет видно, как URL-адреса можно играют важную роль в как содержимое находится и критерий.

Канонический URL

Повторяющееся содержимое обычно представляет проблему для поисковых. Например предположим, механизм поиска видит рецепт знаменитые tacos на две различные URL-адреса. Какой URL должен поисковой предпочитают и обеспечить ссылку в результатах поиска? Повторяющиеся содержимое является еще больше проблем оптимизации, когда доходит до Входящие ссылки. Если «любовь связь»для вашего taco рецепт распределяется по две различные URL-адреса, а затем рецепт знаменитые taco может не иметь рейтинг механизм поиска, он заслуживает.

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

Например рассмотрим веб-узле Microsoft.com. Www.microsoft.com и microsoft.com будет ведут на одинаковое содержимое. Однако с помощью наблюдения тесно при переходе к домашней странице microsoft.com. Узел корпорации Майкрософт будет перенаправлять обозреватель www.microsoft.com. Корпорация Майкрософт использует для обеспечения www.microsoft.com как Канонический URL перенаправления.

К счастью перенаправление посетителям Канонический URL очень просто с помощью ASP.NET. Достаточно предоставить логикой во время события BeginRequest конвейера приложения. Для этого путем реализации настраиваемого модуля HTTP или с помощью метода Application_BeginRequest в global.asax. На рис. 4 — как алгоритм будет выглядеть для этой функции.

Код на рис. 4 используется другая новая функция в ASP.NET 4.0 — метод RedirectPermanent HttpResponse объекта. Традиционный метод перенаправление в ASP.NET передает код состояния HTTP 302 из обратно клиенту. A 302 сообщает клиенту, ресурс временно перемещены на новый адрес URL и клиент должен перейти новый URL-адрес только раз для поиска ресурса. Метод RedirectPermanent отправляет 301 код клиента. The 301 сообщает клиенту ресурса перемещен окончательно, и он должен выглядеть для ресурса по новый URL-АДРЕСУ для всех последующих запросов. Уведомление вызова RedirectPermanent также используется новая функция в C# 4.0—синтаксиса именованного параметра. Хотя данный синтаксис не требуется для вызова метода, синтаксиса именованного параметра сделать цель параметра явные.

С помощью перенаправления в месте веб-обозреватели и поисковые должен использоваться только Канонический URL. На «любовь ссылки»будет консолидации и поисковых следует улучшить.

Описательные URL

Рис. 4 Метод RedirectPermanent объекта HttpResponse

В январь 2009 г выпуске журнала MSDN Magazine я написал о способах использования возможностей маршрутизации .NET 3.5 SP1 с ASP.NET Web Forms (msdn.microsoft.com/en-us/magazine/2009.01.extremeaspnet.aspx).Как БЫЛО сказано, URL-описательные и адреса можно добиться с помощью маршрутизации важны для обоих пользователей и средств поиска.Оба найти более означает в URL как /recipes/tacos чем они будут /recipe.aspx?category=40&topic=32.В первое из них, механизм поиска будет рассматривать «рецепты»и «tacos»как важные ключевые слова для ресурса.Проблема с последний URL заключается, множество программ-обходчиков механизм поиска не работают, хорошо, когда URL-адрес требует строку запроса с несколькими параметрами, а номера в строке запроса являются смысла за пределами серверной базы данных приложения.

Группы ASP.NET добавил некоторые дополнительные классы 4.0 выпуска, маршрутизации с помощью веб-форм легко.В загружаемом коде для этой статьи я re-implemented января демонстрационный веб-узел новых классов ASP.NET 4.0.Маршрутизация начинается с описания маршруты, приложение будет обрабатывать в ходе события Application_Start.RegisterRoutes метод, который вызывает веб-узла во время события Application_Start в global.asax является следующий код:

Перезаписи URL, Mares Aguilar Carlos

URL Rewrite for IIS 7.0 является средством Microsoft делает доступными для загрузки из iis. NET расширений и URLRewrite. Это средство может выполнять всю работу канонизации URL без необходимости любой код. Средство выполнит узел нормализации заголовка, lowercasing и более (как описано в этом блоге: ruslany.net/2009/04/10-url-rewriting-tips-and-tricks/). Средство может также помочь «исправить»нарушена ссылки, перезапись или перенаправление с помощью карты, поэтому не требуется даже изменить приложения и HTML. См.: blogs.MSDN.com/carlosag/Archive/2008/09/02/IIS7UrlRewriteSEO.aspx

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

Рис. 5 получение имени параметра от RouteData для отображения информации о Recipe

Если просмотреть мою статью января, вы помните, как каждый маршрут укажите обработчик маршрута. В RegisterRoutes мы задаются в обработчике для «Рецепт»направлять экземпляр нового класса PageRouteHandler в ASP.NET 4.0. Механизм маршрутизации будет направлять любого входящего запроса URL-адреса в форме рецепт / этому обработчику маршрутов, где <имя>представляет параметр маршрута в маршрут модуль извлечет из URL-адреса.

Веб-форма имеет доступ к все параметры маршрута, механизм маршрутизации извлекает из URL-адрес через свойство RouteData. Это свойство является новый класс страницы в версии 4.0. Код на рис. 5 будет получать RouteData параметр name и имя используется для поиска и отображения сведений о рецепт:

Одной из очень функций механизм маршрутизации является его двунаправленный характер. Не только может разобрать механизм маршрутизации URL управляющих запросов HTTP, но также может создавать URL-адреса для достижения определенных страниц. Например если требуется создать ссылку привести посетитель рецепт tacos, можно использовать механизм маршрутизации для формирования URL-адрес на основе конфигурации маршрутизации (вместо жесткого кодирования URL-адрес). ASP.NET 4.0 представляет новый построитель выражений можно использовать в разметке для формирования URL-адреса из таблицы маршрутизации конфигурации:

Приведенный выше код показан новый построитель выражений RouteUrl в действии. Этот построитель выражений покажет механизм маршрутизации для создания ссылки для маршрута с именем «рецептом»и включите параметр name в URL-адрес со значением «tacos». Предыдущей разметки будет создан следующий HTML:

Выше адрес URL задается понятное, описательное и оптимизированный для поисковой системы. Однако в этом примере вызов большие проблемы с ASP.NET. Серверные элементы управления Web Forms часто абстрактные размещения HTML, они создают, а не все серверные элементы управления в ASP.NET являются поисковой понятное. Пришло время мы вернуться Обсудите HTML.

Ошибок HTML

Если мы создали ссылку рецепт taco, используя LinkButton вместо гиперссылки, мы бы найти сами с другой разметки в обозревателе. Код для LinkButton и HTML, он создает показан здесь:

Мы еще тег для пользователя, нажмите на кнопку, но тег привязки использует JavaScript заставить обозреватель обратной передачи на сервер. LinkButton отображает это HTML для порождения события щелкните серверной стороны, когда пользователь щелкает ссылку. К сожалению JavaScript обратной передачи перемещения и поиска модули не работают вместе. Связь является эффективно невидимыми для средств поиска, и они никогда не может найти страницу назначения.

Рис. 6 IIS 7 Manager

Так как абстрактный размещение HTML элементы управления ASP.NET на сервере, должны разумно выберите серверных элементов управления. Если требуется полный контроль над разметку HTML в среде ASP.NET, затем следует с помощью платформы ASP.NET MVC. Серверные элементы управления являются verboten, при использовании платформы MVC и инфраструктура и интерфейсы API, находятся в место для работы только разметку HTML.

Если используется веб-форм ASP.NET и оптимизации для поисковых, вы захотите просмотреть источник HTML, созданные элементы управления сервера. Каждый веб-обозреватель выдаст этот параметр. В обозревателе Internet Explorer, используйте представление — >Источник команды. Будьте осторожны с любой элемент управления, отображающий сочетанием HTML и JavaScript в сценариях переходов. Например с AutoPostBack элемента управления DropDownList, используемого свойства равным true будет требовать JavaScript для работы. Если полагаться на автоматической обратной передачи для перехода к новому содержимому можно будет осуществлять содержимое невидимыми для средств поиска.

Очевидно, что доступно AJAX приложений может представлять проблему для поисковых. Элемент управления UpdatePanel и содержимого, созданный вызовы веб-службы из JavaScript не понятное поисковых. Безопасный подход для работы SEO — разместить содержимое в HTML, чтобы сделать его легко обнаруживаемые.

После оптимизировано HTML, ключевые слова и в URL-адреса, как вы измеряете результаты? Хотя рейтинг механизм поиска полномасштабный судьи SEO усилий, было бы замечательно, если найден проблем перед узлом переходит live и механизм поиска обхода содержимого страницы. Хотя Visual Studio может сообщить о проблемах проверку HTML, он не предупреждение о отсутствуют метаданные и Канонический URL. Это задание нового продукта—SEO IIS набор средств.

Рис. 7 Сводка по отчету

Этот набор средств IIS SEO

SEO средств IIS является бесплатной загрузки IIS 7 и доступны из iis.net/extensions/SEOToolkit. Этот нанабор средств средств средств включает обхода механизм, который будет индексировать локальные веб-приложения как механизм поиска и предоставить подробные узла аналитического отчета. нанабор средств средств средств инструментов также можно управлять файлы robots.txt и карты веб-узла. Файл роботов использует стандартный формат сообщить поисковых что исключить из индексирования, пока файлы карты веб-узла могут указывать поисковых содержимого, которые требуется включить. Можно также использовать файлы карты веб-узла определить механизм поиска, приоритет, скорость изменения и Дата изменения ресурса.

Для работы SEO отчет анализа веб-узла является неоценимым. Отчета сообщит все об узле с точки зрения поисковой системы. После установки набора средств, в окне диспетчера IIS 7 появится пункт Анализ узла для ваших узлов, как показано на рис. 6.

Дважды щелкните значок, можно перейти список ранее выполнения отчетов, с возможностью действие запуска нового анализа. Выполнение анализа является просто выбрать средство локального URL HTTP и нажав кнопку ОК. По завершении анализа набор средств открыть отчет, сводки, как показано в рис. 7.

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

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

. Часть 1

Интерфейс к базе данных с помощью ASP

Постановка задачи

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

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

Я почти уверен, что подобная задача актуальна применительно практически к любому сайту, тем более что подобным образом (разве что без возможностей поиска, сортировки и удаления) работает большинство гостевых книг (guestbook).

Что нам понадобится

Для реализации вышеизложенной задачи нам потребуется персональный компьютер с Microsoft Windows NT или Windows 2000 (можно и Workstation, и Server), установленный IIS (Internet Information Server), какой-нибудь HTML-редактор (советую использовать Macromedia Dreamweaver), Microsoft Access (версии 95, 97 или 2000) и самый обычный текстовый редактор.

Создание и подготовка базы данных

Прежде всего создадим базу данных статей, для чего:

  • запустим приложение Microsoft Access;
  • любым из известных способов создадим новую базу данных. Назовем ее «Articles»;
  • в созданной базе данных создадим таблицу с именем, например «Articles»;
  • пользуясь инструментом «Конструктор», определим поля нашей таблицы и типы принимаемых ими значений (рис. 1);
  • заполним таблицу несколькими статьями в соответствии с созданными полями (рис. 2);
  • сохраним базу данных в файле «ArticlesDB.mdb».

Далее необходимо прописать нашу базу данных в соответствующем разделе источников данных системы, для этого:

  • запустим программу-конфигуратор источников данных (Data Sources ODBC) — Start->Settings->Control Panel->Administrative Tools->Data Sources ODBC;
  • перейдем во вкладку «System DSN» и создадим новый источник данных, нажав на «Add…»;
  • в появившемся списке драйверов выберем драйвер баз данных Microsoft Access — «Microsoft Access Driver (*.mdb)» и нажмем на «Finish»;
  • в строке «Data Source Name» зададим имя нашей базы данных, например «Articles» (это то имя, по которому мы в дальнейшем будем обращаться к ней);
  • нажмем на «Select…», выберем подготовленный нами файл «ArticlesDB.mdb» и нажмем «OK».

В результате в списке источников данных в вашей системе появится строка, представленная на рис. 3.

Оформляем главную страницу (index.asp)

С ASP работать очень просто. Для этого надо всего лишь вставить текст скрипта ASP в пару тэгов . В остальном ASP-файл ничем не отличается от HTML-файла (за исключением, пожалуй, расширения). Комментарии в HTML, как известно, вставляются в пару тэгов , в ASP же закомментировать строку можно при помощи символа ‘ (апостроф) в ее начале.

Теперь давайте разберемся. Во-первых, как вы наверняка заметили, ASP-код легко сочетается с HTML-тэгами; в этом его достоинство. Так, к примеру, строка Response.Write Link & «
» отображает на экране браузера клиента подготовленное сервером значение переменной Link и HTML-тэг
, то есть перевод строки. Особый интерес вызывает переменная rs. Для искушенных программистов сразу скажу — это указатель. Однако в ASP с целью облегчения работы начинающих указатели маскируются. Здесь не встретишь громоздких С’шных конструкций, типа «я знаю, что ты знаешь, что я знаю», или, выражаясь программистским языком, указатель на указатель… Однако сделано это так искусно, что гибкость программирования при этом не теряется, нет лишь прямой работы с указателями, а только работа с помощью специальных функций, скрывающих от программиста рутину и защищающих указатели от некорректных действий. Таким образом, выражение rs.Fields («Article»).value означает значение поля «Article» текущего значения указателя на элемент базы данных (в нашем случае статей) и содержит текст статьи, которая соответствует текущей позиции указателя на все статьи. Переход к следующему элементу базы (смещение указателя) выполняется с помощью инструкции Rs.MoveNext. В приведенном выше примере это не делается, а попросту формируется ссылка на текст статьи в виде ее названия и отображается комментарий самой первой статьи, соответствующей результату запроса. Давайте попробуем отобразить все статьи нашей базы данных на главной странице в виде HTML. И еще, обратите особое внимание на директиву:

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

Первая строчка скрипта шаблона HTML присваивает переменной TheID значение, переданное ссылкой с использованием метода Request.QueryString. Далее открывается база данных, из которой читается статья (запись), соответствующая идентификатору, переданному из главного скрипта (index.asp).

Создаем главную страницу

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

Язык структурированных запросов — SQL

Настала пора разобраться с тем, что таится за строчками:

По сути, именно за этими двумя строчками кроется работа с нашей базой данных: первая представляет собой текстовую строку с запросом к базе данных (текстовые строки в ASP записываются в двойных кавычках); вторая — содержит директиву выполнения этого запроса с одновременным присвоением результата переменной (указателю на записи в базе данных). В рамках настоящей статьи мы не будем рассматривать SQL (Structured Query Language) во всех деталях, а остановимся лишь на тех его операторах, без понимания которых дальнейшая работа будет невозможна. Для тех, кому этого покажется недостаточным, советую посетить отобранные мною сайты с детальной документацией по SQL.

Для полноценной работы нам необходимо познакомиться с четырьмя операторами этого мощного языка, предназначенного специально для работы с базами данных.

DELETE удаляет те ряды из «Имя Таблицы», которые удовлетворяют условию, определенному в «Определении», и возвращает число удаленных рядов. Если выполнить команду DELETE без условия WHERE, то все ряды указанной таблицы будут удалены. В этом случае DELETE возвратит 0. Ключевое слово LOW_PRIORITY откладывает выполнение операции DELETE до завершения работы чтения из таблицы других клиентов.

SELECT используется для извлечения рядов (записей) из одной или более таблиц. Выражение_Select определяет столбцы таблицы, значения которых необходимо извлечь. Все ключевые поля должны быть заданы в строгой последовательности. К примеру, выражение HAVING должно следовать за любым выражением GROUP BY и до любого выражения ORDER BY.

Выражение_Select можно заменить псевдонимом (alias) с помощью ключевого слова AS. Псевдоним используется в качестве идентификатора имени столбца и может быть использован наряду с ключевыми словами ORDER BY или HAVING.

Выражение HAVING может относиться к любому столбцу или псевдониму в Выражении_Select. Оно применяется к запросу в последнюю очередь, непосредственно перед посылкой данных клиенту. SELECT . INTO OUTFILE ‘имя_файла’ заносит отобранные записи в файл. Файл создается непосредственно на сервере и не может «уже существовать» (одна из основных причин такого механизма заключается в предотвращении случайного «затирания» различных важных файлов).

INSERT используется для добавления новых записей в существующую таблицу. Допустимо две формы использования INSERT.

Первая форма — INSERT . VALUES — вставляет ряды на основании заданных значений. Вторая форма — INSERT . SELECT — вставляет ряды, выбранные из другой таблицы.

Ключевое слово LOW_PRIORITY откладывает выполнение операции до завершения работы чтения из таблицы других клиентов. Ключевое слово IGNORE в команде INSERT позволяет избегать вставки повторяющихся строк (используется в сочетании с ключевыми словами PRIMARY или UNIQUE). Для второй формы INSERT INTO . SELECT операция не может содержать выражения ORDER BY. Таблица, в которую производится добавление записей, не может присутствовать в выражении FROM части SELECT запроса потому, что запрещено производить выделение из той же самой таблицы, в которую производится вставка.


REPLACE служит для редактирования содержимого таблицы и работает в точности как INSERT, за исключением того, что если старая запись в таблице имеет то же значение, что и записываемая, то старая запись удаляется прежде, чем добавляется новая.

UPDATE обновляет поля существующей таблицы новыми значениями. Выражение SET показывает, какие поля (столбцы) должны быть изменены, и значения, которые должны быть им присвоены. Выражение WHERE, если оно есть, указывает, какие ряды должны быть обновлены. В противном случае операция применяется ко всем рядам таблицы. Ключевое слово LOW_PRIORITY откладывает выполнение операции до завершения работы чтения из таблицы других клиентов. Выражения UPDATE выполняются слева направо.

Обновляет значение поля Password в таблице WAPassword, записывая в поле, чей идентификатор ID равен 1 значение ‘passw’.

Увеличивает значение поля counter таблицы Счетчик на 1.

Удваивает поле age, а затем прибавляет 1 к его значению в таблице persondata.

Что такое Global.asa

Global.asa позволяет выполнять определенные скрипты в начале работы клиентской сессии или при инициализации IIS. Примером тому может служить простейший счетчик числа посещений сайта. Более того, допустимо использовать множественные файлы Global.asa. Однако следует помнить, что ASP-скрипт ищет самый близкий (расположенный в том же каталоге) файл Global.asa и использует именно его.

По сути, этот файл может содержать четыре скрипта: первый будет выполняться при инициализации службы IIS/PWS (Application_OnStart), второй — при остановке службы IIS/PWS (Application_OnEnd) (обычно эти первые два скрипта отрабатывают в процессе перезагрузки компьютера), и еще два скрипта выполняются дополнительно при инициализации сессии пользователя (Session_OnStart) и по ее окончании (Session_OnEnd). Данная схема очень сильно напоминает пары «конструктор-деструктор». Неспроста всякая переменная, которая должна быть использована (например, в текущей сессии), может быть инициализирована в Session_OnStart с тем, чтобы быть использованной в процессе работы сессии, она же уничтожается (обнуляется) в Session_OnEnd.

Global.asa не может содержать тэгов HTML. Недопустимо использование JavaScript. Не рекомендуется писать файл Global.asa с помощью каких-либо HTML-редакторов, для этого гораздо лучше использовать NotePad. И еще один совет: прежде чем вставлять скрипт в файл Global.asa, попробуйте его в работе в обычном ASP-файле.

Пример файла Global.asa

Добавляем новую статью (UploadForm.asp и Upload2DBS.asp)

Теперь, когда мы разобрались с SQL, можно приступать к добавлению новой статьи, причем делать мы это будем прямо с сайта, а если быть точнее — непосредственно с HTML-формы. Для этого сначала создадим файл с самой формой и определим скрипт-реакцию на подтверждение (кнопку «Publish the article!»). (Предполагается, что читатель знаком с азами построения HTML-форм, поэтому мы рассмотрим этот процесс, не вдаваясь в детали построения форм.)

Прежде всего следует уточнить задачу на этом этапе. Итак, очевидно следующее:

  • на загрузку статьи с сайта должен иметь право не каждый (следовательно, желательно предусмотреть пароль для доступа к этой функции);
  • у каждой статьи есть определенная тема (рубрика), причем она не может быть произвольной, а должна выбираться из списка;
  • список можно хранить непосредственно в HTML-файле и, каждый раз изменяя его, изменять сам файл. Это самый простой и быстрый способ;
  • однако для того, чтобы позволить динамически изменять и пополнять этот список, рекомендуется держать его в базе данных. Это позволит пользователям произвольным образом изменять его содержимое и не потребует переделки формы. Для простоты сначала рассмотрим вариант со встроенным («жестко прошитым») рубрикатором.

Как видим, передача управления осуществляется благодаря директиве ACTION=»http://localhost/Upload2DBS.asp»> в тэге формы. Тем самым указывается скрипт-ответ на реакцию пользователя после нажатия на кнопку «Publish the article!». Теперь остановимся на селекторе рубрик. Как уже отмечалось, желательно перевести его содержимое в базу данных. Для этого в нашей базе данных (файл ArticlesDB.mdb) создадим новую таблицу с именем, к примеру «Topics», в которой с помощью конструктора определим всего одно поле — «Topic» типа «текст». Далее заполним эту таблицу произвольными значениями нашего рубрикатора и отсортируем полученный список в алфавитном порядке. После чего следует заменить тэг

Теперь давайте разберемся с самой сутью дальнейшей работы. Что же должен делать наш скрипт-реакция?

Во-первых, следует позаботиться о том, чтобы все обязательные поля (а они отмечены звездочкой) были введены. Наиболее правильным способом проверки этого является скрипт, написанный на любом языке описания скриптов (например, JavaScript), который будет проверять, введены ли значения обязательных полей. Для этого достаточно добавить в определение тэга формы параметр onsubmit=»preprocess();», где preprocess() — имя функции-скрипта, который и будет осуществлять проверку. Здесь как нельзя кстати видно преимущество языков описания сценариев (JavaScript, Jscript, VBScript) перед ASP. ASP выполняется на стороне сервера, а перегружать связь «клиент-сервер» простой проверкой типа «введены ли значения», согласитесь, неправильно. Однако специально в целях обучения мы будем делать это с помощью ASP.

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

Удаляем статью (RemoveForm.asp и Rem.asp)

Было бы неплохо предусмотреть возможность удаления статьи с нашего сайта: во-первых, она может устареть, а во-вторых, в процессе ее подготовки не исключены ошибки или опечатки. Останавливаться на форме удаления статьи не будем, скажем лишь, что она содержит единственные элементы с запросом пароля и кнопкой удаления (см. файл RemoveForm.asp), и сразу перейдем к рассмотрению непосредственно процесса удаления:

Особое внимание следует уделить первым двум строкам. Они получают значение глобальной переменной текущего сеанса (сессии) работы со значением идентификатора текущей статьи (в нашем случае удаляемой), которая была инициализирована (файл ArtTmp.htm) следующей строкой:

Таким образом, в текущий скрипт передается в качестве параметра сеансовая переменная с идентификатором текущей статьи, которую необходимо удалить. Имеется в виду, что ссылка на удаление присутствует в странице с шаблоном (файл ArtTmp.htm) и удаляемая статья является текущей.

Организуем поиск (SearchForm.asp и SearchDBS.asp)

Как известно, без поиска навигация в сколь-нибудь солидной базе данных невозможна в принципе. Попробуем организовать поиск статьи по ее реквизитам, причем постараемся организовать булев (логический) поиск, соединяя отдельные значения критериев поиска с помощью логики «И/ИЛИ».

Опять же не заостряя внимание на поисковой форме (файл SearchForm.asp), перейдем непосредственно к самому процессу поиска:

Самое интересное происходит при формировании запроса к базе из составляющих:

В зависимости от введенной пользователем комбинации исходных полей из этих компонентов формируется окончательный запрос, в частности для полей «Author» и «Title». Возможны четыре случая: оба поля пусты, пусто первое поле, пусто второе поле и оба поля не пусты. Соответствующая строка SQL-запроса в каждом из этих случаев формируется по-своему. То же самое относится к состоянию селекторов рубрик статей и порядку их сортировки. При добавлении той или иной подстроки учитывается состояние «радиокнопок» И/ИЛИ и соответствующая подстрока добавляется в SQL-запрос, предваряясь логическим элементом «and» или «or» соответственно. После того как окончательный запрос сформирован, он выполняется, а результирующая страница формируется исходя из списка статей, удовлетворяющих критериям.

Полный код приведенных в статье примеров, включая файл базы данных, находится на нашем CD-ROM.

И в заключение

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

Среди множества инструментальных средств, служащих для облегчения создания ASP-приложений, выделяются два: Easy ASP © Eric Banker, 2000 и Microsoft InterDev из комплекта Microsoft Visual Studio 6.0. Первый — очень удобное, несложное и небольшое средство для быстрого создания ASP-приложений. Второй представляет собой мощный, тяжеловесный интегрированный пакет в духе Microsoft для разработки всевозможных Web-приложений.

Временная версия EasyASP 4.0 находится на нашем CD-ROM.

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

http://www.15seconds.com/issue/000210.htm — создание динамичных JavaScript-скриптов с помощью ASP и интерфейсов к базам данных

http://www.alphasierrapapa.com/iisdev/ — сайт, посвященный разработке серверов IIS с помощью ASP

http://www.websiteresources.com/ — огромная база исходных текстов всевозможных Web-программ

Примеры ASP-кода для профессионалов

http://www.asptoday.com/search.asp?category=ASP Tricks — масса полезных советов для начинающих программировать на ASP

http://www.oreilly.com/catalog/aspnut/ — замечательная книга популярнейшей серии «In a Nutshell» всемирно известного издательства O’REILLY «ASP in a Nutshell A Desktop Quick Reference». На сайте бесплатно размещена одна из глав книги

http://www.chilisoft.net/ — версии ASP для различных платформ можно скачать с этого сайта

http://www.willcam.com/sql/ — введение в структурированный язык запросов SQL

SQL Reference and Example Site — хорошо структурированный материал по SQL

Разработка на ASP.NET. MasterPage, динамические компоненты, AJAX, ASP.NET MVC

7.6. AJAX

Серверные функции ASP.NET могут быть дополнены функциональностью клиентских сценариев в Веб-страницах ASP.NET [13, 14]. Клиентский сценарий можно использовать для предоставления пользователям более функционального и интерактивного интерфейса. Также с помощью клиентского сценария можно осуществлять асинхронные вызовы к Веб-серверу во время выполнения страницы в Веб-обозревателе.

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

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

7.6.1. Преимущества использования ASP.NET AJAX

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

  • повышенная эффективность благодаря тому, что значительная часть обработки веб-страницы выполняется в обозревателе;
  • знакомые элементы пользовательского интерфейса, такие как индикаторы хода выполнения, подсказки и всплывающие окна;
  • частичное обновление страницы, при котором обновляются лишь отдельные части изменившейся веб-страницы;
  • интеграция клиента со службами приложения ASP.NET для проверки подлинности с помощью форм, управления ролями и пользовательскими профилями;
  • автоматически создаваемые прокси-классы, упрощающие вызов методов Веб-службы из клиентского сценария;
  • структура, позволяющая настраивать серверные элементы управления для включения клиентских возможностей;
  • поддержка наиболее популярных и распространенных браузеров, включая Microsoft Internet Explorer, Mozilla Firefox и Apple Safari.

7.6.2. Архитектура AJAX в ASP.NET

Архитектура AJAX в ASP.NET состоит из двух частей: библиотек клиентских сценариев и серверных компонентов. Благодаря интеграции этих двух частей образуется надежная структура разработки.

На рис. 7.16 демонстрируется функциональность, включенная в библиотеки клиентских сценариев и серверные компоненты ASP.NET AJAX [15].

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

Рассмотрим некоторые их этих возможностей более подробно.

7.6.3. Клиентская архитектура технологии AJAX

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

7.6.3.1. Компоненты

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

  • невизуальные объекты, инкапсулирующие код, как объект, представляющий таймер;
  • поведения, расширяющие базовое поведение существующих элементов DOM;

  • элементы управления, представляющие новый элемент DOM, обладающий пользовательским поведением.

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

7.6.3.2. Сетевое взаимодействие

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

7.6.3.3. Базовые службы

Библиотеки клиентских сценариев AJAX в ASP.NET состоят из файлов JavaScript (с расширением JS), содержащих функциональные элементы, используемые для объектно-ориентированной разработки. Объектно-ориентированные возможности, включенные в библиотеки клиентских сценариев AJAX в ASP.NET , обеспечивают высокий уровень совместимости и модульности при написании клиентских сценариев. В состав клиентской архитектуры входят следующие базовые службы:

  • Объектно-ориентированные расширения JavaScript, такие как классы, пространства имен, обработка ошибок, наследование, типы данных и сериализация объектов .
  • Библиотека базовых классов, включающая такие компоненты, как построители строк и расширенная обработка ошибок.
  • Поддержка библиотек JavaScript, внедренных в сборку или предоставляемых в виде отдельных файлов JavaScript (с расширением JS). Внедрение библиотек JavaScript в сборку облегчает развертывание приложений и помогает в решении проблем, связанных с поддержкой разных версий кода.
7.6.3.4. Глобализация

Серверная и клиентская архитектуры AJAX в ASP.NET предоставляют модель локализации и глобализации клиентского сценария. Это позволяет разрабатывать приложения, использующие единую базу кода для предоставления пользовательского интерфейса для многих языков и регионов. Например, архитектура AJAX позволяет коду JavaScript форматировать объекты Date или Number автоматически в соответствии с установкой языка и региональных параметров в обозревателе пользователя, не требуя выполнения обратной передачи данных серверу.

7.6.4. Серверная архитектура AJAX

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

7.6.4.1. Поддержка сценариев

Возможности AJAX в ASP.NET реализуется с использованием служебных сценариев, отправляемых сервером клиенту. В зависимости от того, какие возможности AJAX требуются приложению, обозревателю отправляются разные сценарии.

Можно также создавать пользовательские клиентские сценарии для приложений ASP.NET . В таком случае можно использовать возможности AJAX для управления пользовательскими сценариями как статическими JavaScript (JS) файлами (на диске) или JavaScript (JS) файлами, внедренными в сборку в качестве ресурсов.

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

Благодаря поддержке сценариев AJAX в ASP.NET реализуются две важные функции:

  • Microsoft AJAX (библиотека), которая является системой типов и набором расширений JavaScript, предоставляющих пространства имен, наследование, интерфейсы, перечисления, отражение и дополнительные функции;
  • частичная отрисовка страниц, при котором обновляются части страницы с использованием асинхронной обратной передачи.
7.6.4.2. Локализация

Архитектура ASP.NET AJAX построена на основе модели локализации ASP.NET 2.0. Она обеспечивает дополнительную поддержку локализованных JS-файлов, внедренных в сборку или предоставляемых в виде отдельных дисковых файлов. ASP.NET может автоматически предоставлять локализованные клиентские сценарии и ресурсы для определенных языков и регионов.

7.6.4.3. Веб-службы

Функциональность AJAX позволяет вызывать из клиентского сценария веб-страницы ASP.NET Веб-службы ASP.NET (файлы с расширением asmx ) и службы Windows Communication Foundation (файлы с расширением svc). Ссылки на необходимые сценарии автоматически добавляются в состав страницы, а эти сценарии, в свою очередь, автоматически создают прокси-классы Веб-служб, используемые из клиентских сценариев для вызова этих служб.

Можно также осуществлять доступ к Веб-службам ASP.NET с использованием серверных элементов управления ASP.NET AJAX (например, при использовании другой среды Веб-разработки). Для этого можно вручную включать в состав страницы ссылки на Microsoft AJAX (библиотека), файлы сценариев и Веб-службы. Во время выполнения ASP.NET создает прокси-классы, которые можно использовать для вызова этих служб.

7.6.4.4. Службы приложений

Службы приложений в ASP.NET – это встроенные Веб-службы, основанные на использовании проверки подлинности на основе форм, ролей и пользовательских профилей. Эти службы могут вызываться клиентским сценарием веб-страницы, в которой используется технология AJAX , клиентским приложением Windows или WCF-совместимым клиентом.

7.6.4.5. Серверные элементы управления

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

Ниже приведен список наиболее часто используемых серверных элементов управления ASP.NET AJAX :

  • ScriptManager – управляет ресурсами сценариев для клиентских компонентов, частичной отрисовки страниц, локализации, глобализации и пользовательских сценариев. Элемент управления ScriptManager необходим для использования элементов управления UpdatePanel , UpdateProgress и Timer .
  • UpdatePanel – позволяет обновлять отдельные части страницы вместо обновления ее целиком, осуществляемого путем использования синхронной обратной передачи.
  • UpdateProgress – предоставляет информацию о состоянии касательно частичного обновления страницы в элементах управления UpdatePanel .
  • Timer – выполняет операции обратной передачи с заданной периодичностью. Элемент управления Timer можно использовать для периодического обновления всей страницы или же ее части; в последнем случае он используется совместно с элементом управления UpdatePanel .

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

7.6.5. Пример использования AJAX

Прежде всего, необходимо на страницу добавить в самое начало страницы объект ScriptManager (это должен быть первый объявленный объект внутри form ):

Этот объект будет отвечать за работу JavaScript, в частности за подключение нового скриптового кода, который будет скачиваться при асинхронных запросах.

Далее необходимо на страницу добавить один или несколько компонентов UpdatePanel . При первом рассмотрении UpdatePanel сходен в работе с обычным Panel . В результате рендеренга страницы этот компонент также заменяется на HTML-элемент div и служит для группировки и разметки страницы. Особенность же этого компонента заключается в том, что любой запрос, совершенный элементом, расположенным внутри UpdatePanel является асинхронным и приводит только к перерисовке его содержимого. Остальная страница не изменяется. Даже если при постбэке пользователь изменит структуру или набор компонент вне UpdatePanel , то на этапе Render жизненного цикла страницы , эти изменения не будут учтены, произойдет генерация HTML-разметки только для содержимого компонента и эта разметка будет отправлена клиенту. Клиентская часть ASP.NET AJAX обработает полученный код и изменит разметку внутри div’ а, соответствующего UpdatePanel . При этом стоит отметить, что компоненты нельзя добавлять напрямую в UpdatePanel , необходимо пользоваться тегом ContentTemplate . Аналогично, в коде для динамического добавления компонента, необходимо писать UpdatePanel .ContentTemplate.Controls.Add(myContrlol) ;.

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

Иногда бывает не достаточно обновлять только содержимое того UpdatePanel ‘ а, который вызвал постбэк. Нужно заставить обновиться и другие UpdatePanel ‘ ы на странице. Это можно сделать двумя способами:

  • В разметке ASP или в code-behind UpdatePanel указать триггеры (Triggers), которые будут приводить к перерисовке содержимого этой панели. В качестве параметров указываются идентификаторы серверных компонент, находящихся вне UpdatePanel , которые должны привести к обновлению его содержимого.
  • В code-behind можно вызвать метод UpdatePanel .Update() , что приведет к тому, что его содержимое будет рендерится на сервере и отправляться клиенту.

Реализуем страницу с несколькими UpdatePanel , причем сделаем так, что нажатие кнопки с идентификатором AddReview приводило к обновлению всех UpdatePanel ‘ ов, а не только того, в котором она находится.

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

Поисковая оптимизация для ASP.NET web сайтов

Введение

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

Существует более 100 важных факторов, используемых поисковыми системами для оценки релевантности страницы. Большинство из них – просто теории, так как Google, Yandex и т.д. не раскрывают свои алгоритмы ранжирования. Кроме того, их алгоритмы очень часто меняются для поддержки релевантности результатов поиска. Google не может вручную изменить позицию страниц, даже если он считает, что некоторые из них должны иметь более низкую позицию. Вместо этого поисковые системы пытаются исправить ошибку алгоритма. Из-за этого SEO – очень динамическая и шаткая область веб разработки, но существуют основы, необходимые всем для изучения.

Уникальный заголовок (title) для каждой страницы

Каждая страница сайта должна иметь свой уникальный заголовок. Он должен быть кратким, содержательным и обязательно включать в себя ключевые слова, релевантные контенту на странице. Нежелательно вставлять название компании в начале каждого заголовка, поисковые системы могут посчитать данный ход как спам. Тег title может быть отредактирован на любой стадии проекта, но, если у вас имеется система управления контентом (CMS), Вы можете изменять его через свойство Page.Title:

Не используйте слишком длинные названия, так как поисковые системы обрезают тег title до 12-15 слов.

Использования мета-тегов “Description” и “Keywords”

Данные теги очень важны для поисковой оптимизации, но сейчас ими начали злоупотреблять. Сегодня мета-тег keywords — бесполезный инструмент, однако description по-прежнему остается основным ключевым тегом в SEO оптимизации. Google часто использует description при отображении результатов поиска в качестве текста под ссылкой на страницу. Поэтому, если у вас релевантный мета-тег description, Вы можете получить больше посещений, даже если Вы не на первых страницах поиска. Желательно установить уникальные описания для каждой страницы. Как и заголовок, Вы можете изменить данный мета-тег в разметке страницы, или динамически, на стороне сервера:

protected void Page_Init( object sender, EventArgs e)

HtmlMeta metaDescription = new HtmlMeta();

metaDescription.Content = » Видеокурсы , видеотренинги для программистов . Языки программирования и информационные технологии» ;

HtmlMeta metaKeywords = new HtmlMeta();

metaKeywords.Content = «IT видео , Видео тренинги , видеокурсы , технологии Microsoft, видео обучение , ITVDN, Акции » ;

Protected Sub Page_Init( ByVal sender As Object , ByVal e As System.EventArgs) Handles Me .Init
‘ Тег description
Dim metaDescription As HtmlMeta = New HtmlMeta()
metaDescription.Name = «Description»
metaDescription.Content = «Видеокурсы, видеотренинги для программистов. Языки программирования и информационные технологии »
Page.Header.Controls.Add(metaDescription)

‘ Тег keywords
Dim metaKeywords As HtmlMeta = New HtmlMeta()
metaKeywords.Name = «Keywords»
metaKeywords.Content = «IT видео, Видео тренинги, видеокурсы, технологии Microsoft, видео обучение, ITVDN,Акции»
Page.Header.Controls.Add(metaKeywords)
End Sub

Использование тега H1


Тег h1 – очень важный и в то же время очень простой способ улучшить Вашу позицию в результатах поиска. Лучше всего, если h1 будет иметь то же содержание, что и тег title. Просто поместите короткое, релевантное ключевое слово в теги h1 и title. Как и любой другой тег HTML, он изменяется в разметке, или динамически при добавлении runat=»server» и установке его id:

h1 runat =»server» id =»MyPageHeader» > h1 >

Теперь вы можете манипулировать тегом h1 с помощью серверного кода ASP.NET:

Переадресация url адреса в ASP.NET

Иногда Вам нужно переместить страницу на другой URL или же полностью сменить домен. Типичный пример – смена ASP на ASP.NET. Для этого необходимо изменить расширения файлов с .asp на .aspx. Если посетитель заходит на Ваш старый адрес, он должен перенаправляться на новый адрес. Есть два вида переадресации:

  1. Временное перенаправление, выдающее сообщение “302 Found”. Используется очень редко.
  2. Постоянное перенаправление, выдающее “301 Moved Permanently”. Используется для передачи популярности (веса) на новый адрес.

Оптимизация работы поисковой системы при помощи ASP.NET 4.0, Visual Studio 2010 и IIS7

Скотт Ален (Scott Allen)

Любой пользователь с открытого веб-узла знает, что поисковых играют ключевую роль в перенос посетителей узла.Важно рассматривать поисковые системы и ранг высокой в их результаты запроса.Выше ранжирование может перевести более посетителей, может привести к более своим клиентам и высокий доход рекламного объявления.Механизм оптимизации поиска (SEO) является практика тонкой узел для достижения более ранжирование результатов поиска.В этой статье мы вам взгляните на SEO рекомендации, можно применять при использовании с новейшими технологиями Майкрософт.

Основы SEO

Существуют многие факторы в воспроизведение, когда механизм поиска автоматически формирует относительный ранг узла и некоторые более важные факторы не являются прямого управления версиями.Например мы знаем, поисковые хотели увидеть Входящие ссылки на веб-узла.Входящие ссылки представляет собой гиперссылку на вне домена, который указывает в свой домен.Когда механизм поиска видит многие Входящие ссылки на узел, предполагается узел имеет содержимое интересные и важные и соответствующим образом ранжирует веб-узла.Это явление, используя технические термины описывает сообщества SEO как «установить связь сок»и «связать любовь.» Более «связи сок»обладает веб-узла, тем выше веб-узел будет отображаться в результаты поиска.

Если узел является интересным, затем остальная часть мира естественным образом запустится Добавление ссылок в веб-узла.Поскольку Visual Studio не поставляются с» создать Мой узел другие интересующих»кнопки, в конечном счете придется жесткого работают на предоставление link-worthy содержимого для веб-узла.

После очень содержимого в месте, вы захотите убедитесь, что средства поиска можно найти и обрабатывать содержимое.Мы не знаем точное алгоритмов, используемых поисковыми Bing.com и Google.Большинство поисковых опубликовали правила разработки и содержимое, можно выполнить помогают повысить ранжирование вашего.Сообщество Интернета также компилируется широкий объем знания, полученные через экспериментирования проб и ошибок.

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

Быстрый и допустимые HTML

Visual Studio имеет длинное журнал WYSIWYG разработки для рабочего стола и веб-узла.Конструктор форм Web позволяет перетаскивание серверных элементов управления на поверхности разработки и задания значений для элементов управления в окне «Свойства».Можно быстро создать веб-страницы без видеть HTML.Если уделяется HTML тем не менее, вы захотите работать в окне представления исходного кода.Хорошая новость состоит в представлении источника можно работать без потери скорости или точность в Visual Studio 2010.

Visual Studio 2010 будет поставлять с числом фрагментов кода HTML IntelliSense для создания общих тегов HTML и серверных элементов управления с использованием минимального числа нажатий клавиш.Например, при работе в представлении источника ASPX-файла введите img и нажмите клавишу TAB для создания разметки, показанной на рис. 1.Только для четырех нажатий клавиш дать вам более 20 символов, необходимых!

Обратите внимание, как в редакторе выделяются значения src и alt на рис. 1.При использовании фрагментов кода, вкладке между выделенной области и начните ввод перезаписать значения внутри.Данное средство является другой производительность премии, сохраняющего усилия переход к правильной курсор и вручную удалить существующее значение.

Проекты ASP.NET Web Forms и ASP.NET MVC, будет иметь фрагменты HTML в Visual Studio 2010, чтобы создать все из ActionLinks объявления DOCTYPE XHTML.Фрагменты являются расширяемый, настраиваемый и зависимости же ядро фрагмент, был доступен с момента Visual Studio 2005.Прочитайте статью Лорензо Миноре в MSDN, в которой вы найдете дополнительные сведения о фрагментах (msdn.microsoft.com/en-us/magazine/cc188694.aspx).

Рис. 2 Параметры проверки

Проверка

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

Поскольку существуют различные версии спецификации HTML, каждая страница доставить из приложения должен включать элемент DOCTYPE.Элемент DOCTYPE указывает версию с помощью страницы HTML.Веб-обозреватели, поисковые системы и другие средства рассмотрим DOCTYPE, чтобы они знали способ интерпретации разметки.Visual Studio будет поместить DOCTYPE в правильное расположение при создании новых веб-формы страниц и главных страниц.По умолчанию DOCTPYE, как показано в следующем фрагменте кода указывает на страницу будет соответствовать спецификации XHTML 1.0:

Хотя не требуется знать все незначительные различия между спецификации HTML, необходимо знать, если на странице соответствует определенным DOCTYPE. Visual Studio включены функции проверки HTML с момента выпуска 2005 и проверки по умолчанию включен. Могут управлять параметрами проверки и проверки целевой тип, переход к средства | параметры | текстовый редактор | HTML | параметры проверки, как показано на рис. 2).

В «в качестве предупреждения»параметр означает проблемы проверки HTML не остановить построение, но будут отображаться как предупреждения в окне ошибок Visual Studio. В представлении источника для веб-форм текстовый редактор будет привлечь внимание к ошибок проверки HTML с помощью волнистыми линиями. Мышь, над элементом, чтобы увидеть точное сообщение об ошибке, как илюстрировано на рис. 3.

Описательные HTML

Тег img на рис. 3 является хорошим примером как необходимо думать как механизм поиска. Как БЫЛО сказано ранее, механизм поиска не см или интерпретации фигур и слов в изображение, но мы с помощью атрибута alt механизм поиска помогут некоторые дополнительные сведения о графического содержимого. Если изображение является логотип компании, замещающий текст может быть «эмблему»но он будет лучше включить название фирмы, в эмблему замещающий текст. Механизм поиска будет использовать замещающий текст как другой ключ в понимании темы и суть страницы.

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

Если снова взглянуть на заголовки, выбранные для данной статьи, вы увидите, они вращаются вокруг фразы как «Допустимые HTML»«Основы SEO»и т д.. Они все описания фразы, даст чтения и механизм поиска хорошим является о статье.

Описательные названия и метаданных

Другой важной области описательные ключевые слова находится внутри тег head. Здесь отображается раздел head из одной из страниц в соответствующий код для загрузки:

Слова внутри тега заголовка страницы сильно взвешенное, поэтому необходимо выбрать удачных наименований. Тег head также можно заключить теги meta. Вы захотите использовать два тега МЕТА для работы SEO—один набор связанных ключевых слов на страницу и один для установки на страницу описания. Посетители обычно не увидят эти сведения метаданных, но некоторых поисковых отобразить описание метаданных страницы в результатах поиска. Ключевые слова метаданных являются другое место объявления реальной понятие страницы по подкормки важные слова ядро сопоставить страницы поиска.

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

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

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

Другой практического занятия, чтобы избежать обслуживает различное содержимое поисковой системой crawler, чем бы служат для регулярных посетителей. Некоторые узлы будут этого перехват заголовок агента пользователя или IP-адрес входящего запроса. Хотя может быть возможность представить некоторые полезные возможности для данного типа поведения, слишком много узлов использовался этот метод, чтобы скрыть известных вредоносных программ и фишинга содержимого из поисковых. Если механизм поиска определяет поведение (известная как Маскировка), вы будете penalized. Оставаться честными, предоставляют хороший содержимое и не пытайтесь игры или управлять ядро результаты поиска.

Можно просмотреть использование свойств заголовка и MetaKeywords MetaDescription на страницу во время события Page_Load. Свойство Title начиная с версии 2.0 был в ASP.NET, но MetaKeywords и MetaDescription появились в ASP.NET 4.0. Хотя мы по-прежнему используется жестко запрограммированных строк, значения этих свойств удалось загрузить из любого источника данных. Затем можно разрешить другому ответственному за маркетинг подправить метаданных для лучших результатов поиска обработчик веб-узла и их необходимость редактировать исходный код для страницы.

Хотя эффективных ключевых слов и описания может дать вам чуть края в ядро результатах поиска содержимого, по-прежнему короля. Мы вернусь чтобы увидеть дополнительные советы по HTML далее в этой статье, но в следующий ряд разделов будет видно, как URL-адреса можно играют важную роль в как содержимое находится и критерий.

Канонический URL

Повторяющееся содержимое обычно представляет проблему для поисковых. Например предположим, механизм поиска видит рецепт знаменитые tacos на две различные URL-адреса. Какой URL должен поисковой предпочитают и обеспечить ссылку в результатах поиска? Повторяющиеся содержимое является еще больше проблем оптимизации, когда доходит до Входящие ссылки. Если «любовь связь»для вашего taco рецепт распределяется по две различные URL-адреса, а затем рецепт знаменитые taco может не иметь рейтинг механизм поиска, он заслуживает.

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

Например рассмотрим веб-узле Microsoft.com. Www.microsoft.com и microsoft.com будет ведут на одинаковое содержимое. Однако с помощью наблюдения тесно при переходе к домашней странице microsoft.com. Узел корпорации Майкрософт будет перенаправлять обозреватель www.microsoft.com. Корпорация Майкрософт использует для обеспечения www.microsoft.com как Канонический URL перенаправления.

К счастью перенаправление посетителям Канонический URL очень просто с помощью ASP.NET. Достаточно предоставить логикой во время события BeginRequest конвейера приложения. Для этого путем реализации настраиваемого модуля HTTP или с помощью метода Application_BeginRequest в global.asax. На рис. 4 — как алгоритм будет выглядеть для этой функции.

Код на рис. 4 используется другая новая функция в ASP.NET 4.0 — метод RedirectPermanent HttpResponse объекта. Традиционный метод перенаправление в ASP.NET передает код состояния HTTP 302 из обратно клиенту. A 302 сообщает клиенту, ресурс временно перемещены на новый адрес URL и клиент должен перейти новый URL-адрес только раз для поиска ресурса. Метод RedirectPermanent отправляет 301 код клиента. The 301 сообщает клиенту ресурса перемещен окончательно, и он должен выглядеть для ресурса по новый URL-АДРЕСУ для всех последующих запросов. Уведомление вызова RedirectPermanent также используется новая функция в C# 4.0—синтаксиса именованного параметра. Хотя данный синтаксис не требуется для вызова метода, синтаксиса именованного параметра сделать цель параметра явные.

С помощью перенаправления в месте веб-обозреватели и поисковые должен использоваться только Канонический URL. На «любовь ссылки»будет консолидации и поисковых следует улучшить.

Описательные URL

Рис. 4 Метод RedirectPermanent объекта HttpResponse

В январь 2009 г выпуске журнала MSDN Magazine я написал о способах использования возможностей маршрутизации .NET 3.5 SP1 с ASP.NET Web Forms (msdn.microsoft.com/en-us/magazine/2009.01.extremeaspnet.aspx).Как БЫЛО сказано, URL-описательные и адреса можно добиться с помощью маршрутизации важны для обоих пользователей и средств поиска.Оба найти более означает в URL как /recipes/tacos чем они будут /recipe.aspx?category=40&topic=32.В первое из них, механизм поиска будет рассматривать «рецепты»и «tacos»как важные ключевые слова для ресурса.Проблема с последний URL заключается, множество программ-обходчиков механизм поиска не работают, хорошо, когда URL-адрес требует строку запроса с несколькими параметрами, а номера в строке запроса являются смысла за пределами серверной базы данных приложения.

Группы ASP.NET добавил некоторые дополнительные классы 4.0 выпуска, маршрутизации с помощью веб-форм легко.В загружаемом коде для этой статьи я re-implemented января демонстрационный веб-узел новых классов ASP.NET 4.0.Маршрутизация начинается с описания маршруты, приложение будет обрабатывать в ходе события Application_Start.RegisterRoutes метод, который вызывает веб-узла во время события Application_Start в global.asax является следующий код:

Перезаписи URL, Mares Aguilar Carlos

URL Rewrite for IIS 7.0 является средством Microsoft делает доступными для загрузки из iis. NET расширений и URLRewrite. Это средство может выполнять всю работу канонизации URL без необходимости любой код. Средство выполнит узел нормализации заголовка, lowercasing и более (как описано в этом блоге: ruslany.net/2009/04/10-url-rewriting-tips-and-tricks/). Средство может также помочь «исправить»нарушена ссылки, перезапись или перенаправление с помощью карты, поэтому не требуется даже изменить приложения и HTML. См.: blogs.MSDN.com/carlosag/Archive/2008/09/02/IIS7UrlRewriteSEO.aspx

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

Рис. 5 получение имени параметра от RouteData для отображения информации о Recipe

Если просмотреть мою статью января, вы помните, как каждый маршрут укажите обработчик маршрута. В RegisterRoutes мы задаются в обработчике для «Рецепт»направлять экземпляр нового класса PageRouteHandler в ASP.NET 4.0. Механизм маршрутизации будет направлять любого входящего запроса URL-адреса в форме рецепт / этому обработчику маршрутов, где <имя>представляет параметр маршрута в маршрут модуль извлечет из URL-адреса.

Веб-форма имеет доступ к все параметры маршрута, механизм маршрутизации извлекает из URL-адрес через свойство RouteData. Это свойство является новый класс страницы в версии 4.0. Код на рис. 5 будет получать RouteData параметр name и имя используется для поиска и отображения сведений о рецепт:

Одной из очень функций механизм маршрутизации является его двунаправленный характер. Не только может разобрать механизм маршрутизации URL управляющих запросов HTTP, но также может создавать URL-адреса для достижения определенных страниц. Например если требуется создать ссылку привести посетитель рецепт tacos, можно использовать механизм маршрутизации для формирования URL-адрес на основе конфигурации маршрутизации (вместо жесткого кодирования URL-адрес). ASP.NET 4.0 представляет новый построитель выражений можно использовать в разметке для формирования URL-адреса из таблицы маршрутизации конфигурации:

Приведенный выше код показан новый построитель выражений RouteUrl в действии. Этот построитель выражений покажет механизм маршрутизации для создания ссылки для маршрута с именем «рецептом»и включите параметр name в URL-адрес со значением «tacos». Предыдущей разметки будет создан следующий HTML:

Выше адрес URL задается понятное, описательное и оптимизированный для поисковой системы. Однако в этом примере вызов большие проблемы с ASP.NET. Серверные элементы управления Web Forms часто абстрактные размещения HTML, они создают, а не все серверные элементы управления в ASP.NET являются поисковой понятное. Пришло время мы вернуться Обсудите HTML.

Ошибок HTML

Если мы создали ссылку рецепт taco, используя LinkButton вместо гиперссылки, мы бы найти сами с другой разметки в обозревателе. Код для LinkButton и HTML, он создает показан здесь:

Мы еще тег для пользователя, нажмите на кнопку, но тег привязки использует JavaScript заставить обозреватель обратной передачи на сервер. LinkButton отображает это HTML для порождения события щелкните серверной стороны, когда пользователь щелкает ссылку. К сожалению JavaScript обратной передачи перемещения и поиска модули не работают вместе. Связь является эффективно невидимыми для средств поиска, и они никогда не может найти страницу назначения.

Рис. 6 IIS 7 Manager

Так как абстрактный размещение HTML элементы управления ASP.NET на сервере, должны разумно выберите серверных элементов управления. Если требуется полный контроль над разметку HTML в среде ASP.NET, затем следует с помощью платформы ASP.NET MVC. Серверные элементы управления являются verboten, при использовании платформы MVC и инфраструктура и интерфейсы API, находятся в место для работы только разметку HTML.

Если используется веб-форм ASP.NET и оптимизации для поисковых, вы захотите просмотреть источник HTML, созданные элементы управления сервера. Каждый веб-обозреватель выдаст этот параметр. В обозревателе Internet Explorer, используйте представление — >Источник команды. Будьте осторожны с любой элемент управления, отображающий сочетанием HTML и JavaScript в сценариях переходов. Например с AutoPostBack элемента управления DropDownList, используемого свойства равным true будет требовать JavaScript для работы. Если полагаться на автоматической обратной передачи для перехода к новому содержимому можно будет осуществлять содержимое невидимыми для средств поиска.

Очевидно, что доступно AJAX приложений может представлять проблему для поисковых. Элемент управления UpdatePanel и содержимого, созданный вызовы веб-службы из JavaScript не понятное поисковых. Безопасный подход для работы SEO — разместить содержимое в HTML, чтобы сделать его легко обнаруживаемые.

После оптимизировано HTML, ключевые слова и в URL-адреса, как вы измеряете результаты? Хотя рейтинг механизм поиска полномасштабный судьи SEO усилий, было бы замечательно, если найден проблем перед узлом переходит live и механизм поиска обхода содержимого страницы. Хотя Visual Studio может сообщить о проблемах проверку HTML, он не предупреждение о отсутствуют метаданные и Канонический URL. Это задание нового продукта—SEO IIS набор средств.

Рис. 7 Сводка по отчету

Этот набор средств IIS SEO

SEO средств IIS является бесплатной загрузки IIS 7 и доступны из iis.net/extensions/SEOToolkit. Этот нанабор средств средств средств включает обхода механизм, который будет индексировать локальные веб-приложения как механизм поиска и предоставить подробные узла аналитического отчета. нанабор средств средств средств инструментов также можно управлять файлы robots.txt и карты веб-узла. Файл роботов использует стандартный формат сообщить поисковых что исключить из индексирования, пока файлы карты веб-узла могут указывать поисковых содержимого, которые требуется включить. Можно также использовать файлы карты веб-узла определить механизм поиска, приоритет, скорость изменения и Дата изменения ресурса.

Для работы SEO отчет анализа веб-узла является неоценимым. Отчета сообщит все об узле с точки зрения поисковой системы. После установки набора средств, в окне диспетчера IIS 7 появится пункт Анализ узла для ваших узлов, как показано на рис. 6.

Дважды щелкните значок, можно перейти список ранее выполнения отчетов, с возможностью действие запуска нового анализа. Выполнение анализа является просто выбрать средство локального URL HTTP и нажав кнопку ОК. По завершении анализа набор средств открыть отчет, сводки, как показано в рис. 7.

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

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

Вопрос по bundling-and-minification, asp.net, javascript &#8211 Согласование пакетов сценариев ASP.NET и исходных карт

Есть ли способ настроить по умолчанию System.Web.Optimization.ScriptBundle чтобы генерироватьисходные карты для связанных и свернутых файлов? Есть ли эквивалентное решение, кроме необходимости предварительно генерировать пакеты и исходные карты перед каждой сборкой?

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

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

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

пакетирования файлов сценариев в веб-приложения с основы оптимизации asp.net

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

Что я не хватает? Спасибо.

Создан 24 авг. 12 2012-08-24 05:29:31 r.zarei

3 ответа

Я нашел решение, я не знаю, почему Scripts.Render(«

/miniscripts/») не отображает сценарии. Я обернул его Response.Write и проблема решена.

Создан 24 авг. 12 2012-08-24 18:36:56 r.zarei

Scripts.Render возвращает вам IHtmlString, вы можете просто сделать это: – Hao Kung 24 авг. 12 2012-08-24 18:49:21

Предполагаю, что вы используете онлайн-версию и версию миниатюры.

Сначала вы должны добавить JsMinify при создании сверток так asp.net знает, как minifiy файлы

И тогда вы должны добавить ссылку скрипт на страницу

Создан 24 авг. 12 2012-08-24 07:19:53 Erwin

Пакет пучков = новый комплект («

/miniscript», typeof (JsMinify)); устарел и в AspNet.Web.Optimization [ссылка] http://nuget.org/packages/Microsoft.AspNet.Web.Оптимизация оптимизации, мы просто предоставляем virtualPath. – r.zarei 24 авг. 12 2012-08-24 08:09:57

Поэтому, предполагая, что вы используете пакет 1.0.0, вы, вероятно, захотите использовать

Oth ваш Bundle не делает никаких изменений, просто связывая все файлы сценариев вместе. Затем на вашей странице вам нужно будет добавить:

Для ссылки на комплект, чтобы получить визуализированный. Вы также должны ознакомиться с учебником здесь: Optimization Tutorial

Создан 24 авг. 12 2012-08-24 17:24:33 Hao Kung

Илон Маск рекомендует:  Шаблон сайта Magic Wood HTML + CSS + JS
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
Примечание