Реактивные веб-сайты

e‡OOOI‡„‡AI JavaScript-U‡EI? ‚ IOI?A OU?‡IE??

Следовать этому правилу бывает очень сложно. Например, иногда хо-

чется добавить jQuery в самом начале, чтобы потом не волноваться на те-

му того, загрузилась ли эта библиотека. В любом случае, для всех ваших

скриптов будет хорошей практикой проверять, загрузилась ли основная

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

Например, файл

Library.js

может содержать

function DoSomething()

{

}

А после этого прямо в коде страницы:

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

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

мени. Лучше всего создавать дополнительную клиентскую логику, ис-

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

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

нал. Более подробно данные техники были освещены в главе «Ненавяз-

чивый JavaScript» книги «Разгони свой сайт».

8.1.6. iIAI??‡AI ?EOIO DNS-A‡O?OOO‚

Для этого стоит скопировать внешние ресурсы (картинки, JavaScript-

файлы) к себе на сайт.

———————— Page 285————————

284 РЕАКТИВНЫЕ ВЕБ-САЙТЫ

Например, на блоге располагается иконка валидной страницы от W3.

Изначально эта иконка находилась на сайте W3 Schools, но для ускорения

загрузки сайта стоит скопировать ее в свой проект. Тогда она будет рас-

полагаться локально, а при загрузке сайта понадобится на 1 DNS-запрос

меньше.

8.1.7. iIAI??‡AI JavaScript

Минимизацию JS-кода можно осуществлять при публикации очередно-

го выпуска сайта при помощи MS Build (это наиболее разумная позиция —

осуществлять все оптимизационные процедуры при превращении сайта из

тестового в рабочий). Для этой цели можно использовать YUI compressor.

Ниже приведен вариант скрипта для MS Build.

DestinationFiles=».\$(ProjectName)\Javascript\ColorPicker.js.full

«/>

DestinationFiles=».\$(ProjectName)\Styles\ColorPicker.css.full»/>

.\$(ProjectName)\Styles\ColorPicker.css.full

>.\$(ProjectName)\Styles\ColorPicker.css»/>

8.1.8. i‰‡I?AI ‰U·IE?U??EAO? OI?EOU?

Аккуратно подходите к разработке своего сервера и пользователь-

ских расширений. Проверяйте, что несколько различных расширений за-

гружают общие библиотеки только один раз.

8.1.9. c‡OU?OEUA ETag

Кэширующий модуль и CDN должны решить эту проблему. Но стоит

также иметь в виду, что в ASP .NET есть специальный метод для ETag:

Response.Cache.SetETag

———————— Page 286————————

5

8

Практическое приложение 2

8.2. e‡A„OI?AI Drupal

Автор данного раздела, Елена Цаплина

(aka Касихина), — программист-разработчик и

руководитель нескольких Интернет-проектов:

студия дизайна и разработки Интернет-сайтов

Aquanther (http://www.aquanther.ru/), еже-

дневный женский журнал «Мои подружки»

(http://www.moipodruzhki.ru/), программное

обеспечение (под управлением ОС Windows)

под единым названием — HomAff (сокращение

от home affairs).

Елена известна своей публикацией о CMS Drupal — вводный курс по

Drupal (http://drupal.ru/node/26290), получившей широкое распростра-

нение в Рунете.

В данный момент под ее руководством (на базе студии Aquanther)

разрабатывается мультимедийный курс по созданию и управлению сай-

том с использованием CMS Drupal. В дальнейшем вместе с мультимедий-

ным курсом планируется распространение модифицированных версий

CMS Drupal, специализированных для определенных типов сайтов, и ока-

зание платной поддержки данной CMS.

8.2.1. COUUOIAIEA

Drupal — довольная распространенная CMS, и это наложило на нее

свой отпечаток: базовая поставка Drupal является не готовым решением

для определенного вида сайта, а фундаментом для его создания. Сущест-

вуют «сборки» на базе Drupal, специализированные под определенные

виды сайтов, например, под новостные сайты.

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130