


Используем CDN (Content Delivery Networks). Разгоняем ASP.NET: 100 баллов и оценка "A" в YSlow. Практическое приложение. Оптимизация структуры веб-страниц
Используем CDN (Content Delivery Networks)
Добавляем заголовок Expires
Располагаем CSS-файлы в начале страницы
Располагаем JavaScript-файлы в конце страницы
Уменьшаем число DNS-запросов
Уменьшаем JavaScript
Удаляем дублирующиеся скрипты
Настройте ETag
Сети доставки содержания (англ. CDN, Content Delivery Network) стоят довольно дорого. Но можно поступить проще и использовать для этого Google (подробнее рассказывается в шестой главе). Естественно, придется немного попотеть, прежде чем собрать из Google App Engine свою идеальную CDN.
Можно также использовать msbuild для изменения файлов стилей при использовании CDN. Ниже приведен рабочий пример (в нем пути с ../images/ заменяются на http://karpach.appspot.com/cdn/images/):
<Import Project=".\References\MSBuild.Community.Tasks.targets" />
<Target Name="Release">
<FileUpdate Files="$(OutputPath)styles\basic.css" Regex="\.\.\/images/([^\)]*)" ReplacementText="http://karpach.appspot.com/cdn/images/$1" />
</Target>
Теперь нужно положить в CDN все ваши изображения, файлы стилей и скриптов. Здесь как раз и всплывает проблема сброса кэша. что будет, если пользователь зашел к вам на сайт как раз перед тем, как вы выложили новую версию, в которой изменился файл стилей и некоторые изображения? По-видимому, этот пользователь будет видеть со старыми стилями и картинками еще 7 дней, и он просто не увидит изменений, пока не истечет срок действия кэша в его браузере. Это не есть хорошо. Если озвученный вопрос становится актуальным, то стоит посмотреть, что Yahoo! сделали на своем веб-сайте. В названии картинки они «зашивают» метку даты и версию. Например, trough_2.0_062308.gif. Это выглядит разумно. Если вы изменяете какой-либо из ваших CSS Sprites, то его нужно вручную переименовать при помощи новой даты и версии (на самом деле, процесс переименования файлов должен быть заложен в сам инструмент создания CSS Sprites, подробнее о сбросе кэша и объединении файлов было рассказано в четвертой главе).
Однако, по всей видимости, этот подход может быть неприменим для файлов стилей. Для начала стоит обеспечить контроль изменений версий таблиц стилей (в данном случае это SVN). Для картинок это не играет существенной роли, потому что они меняются не так часто. Основная идея заключается в том, что у нас может быть один физический файл (например, basic.css), а на странице использоваться адрес другого файла (например, basic_14102262.css), где 14102262 — это текущая версия приложения. Затем мы можем использовать технологию url rewrite, так что basic_14102262.css будет указывать на basic.css. Пользователь с закэшированной версией basic_14102261.css будет вынужден загрузить новую версию basic_14102262.css, потому как изменилось имя файла.
Движок Google Apps позволяет легко реализовывать rewrite для URL. Для этого можно просто изменить ваш app.yaml следующим образом:
- url: /cdn/styles/basic_\d*\.css
static_files: cdn/styles/basic.css
upload: cdn/styles/basic\.css
Более подробно о настройке CDN от Google рассказывалось в предыдущей главе.