Читаем Журнал «Компьютерра» № 20 от 30 мая 2006 года полностью

Исходный код шаблонов не меняется, что позволяет нам сохранять эти файлы разделенными во время разработки. Кроме того, мы можем написать собственный процесс объединения на PHP и использовать тот же самый конфигурационный блок при самом объединении (а использование одного и того же конфигурационного файла избавляет нас от необходимости синхронизации). А если брать по максимуму, то можно проанализировать использование скриптов и стилей на страницах сайта, чтобы определить, какие именно файлы лучше объединять (хорошие кандидаты для такого объединения — это файлы, которые почти всегда подгружаются вместе).

В случае с CSS можно начать с полезной модели, состоящей из двух стилей: основного стиля и стиля подраздела. Единый основной стиль используется во всем приложении, а разные стили подразделов контролируют разные функциональные области. В этом случае подавляющее большинство страниц подгружают только два стиля (один из которых кэшируется при первой загрузке — это, конечно, основной).

Для небольших наборов CSS и JavaScript такой подход может замедлить обработку первого запроса (в сравнении с «монолитным» подходом), но если сохранять количество компонентов на относительно низком уровне, то возможно и ускорение работы, поскольку в расчете на одну страницу приходится загружать меньше данных.

Сжатие

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


Accept-Encoding: gzip,deflate

Видя такой заголовок, сервер сжимает отсылаемое содержимое методами gzip или deflate с тем, чтобы клиент распаковал его на месте. Это загружает процессор как на клиенте, так и на сервере, однако уменьшает объем передаваемых данных. Это нормально. Однако вот как работает mod_gzip: он сжимает данные во временный файл на диске, а после отсылки данных удаляет этот файл. На больших системах вы очень быстро столкнетесь с ограничениями скорости ввода/вывода. Этого можно избежать, используя вместо mod_gzip mod_deflate (только в Apache 2), поскольку последний сжимает данные в оперативной памяти. Пользователи первой версии Apache могут создать RAM-диск и хранить временные файлы mod_gzip там — это не так быстро, как работа напрямую с оперативкой, но намного шустрее, чем писать все на жесткий диск.

Но даже без этого мы можем полностью избежать вышеописанных проблем, используя предварительное сжатие нужных статических ресурсов и последующую отправку их клиенту с помощью mod_gzip. Если добавить предварительное сжатие в сборку билда, то сам процесс пройдет для нас совершенно незаметно. Файлов, требующих упаковки, обычно не так уж много — мы не сжимаем изображения (поскольку это вряд ли приведет хоть к какой-то экономии — изображения и так уже достаточно сжаты), так что нам остается упаковать JavaScript, CSS и прочий статический контент. Но мы должны указать mod_gzip, где искать файлы для предварительной компрессии:


mod_gzip_can_negotiate Yes

mod_gzip_static_suffix .gz

AddEncoding gzip .gz

В последних версиях mod_gzip (от 1.3.26.1a и выше) для автоматической предварительной упаковки файлов в конфигурационных опциях достаточно добавить одну строчку. Нужно лишь удостовериться, что в Apache установлены корректные разрешения на создание и перезапись упакованных файлов.

mod_gzip_update_static Yes

Но не все так просто. Текущие версии Netscape 4 (точнее, 4.06—4.08) в заголовке утверждают, что понимают содержимое, сжатое с помощью gzip, однако, на самом деле, не умеют распаковывать эти архивы. Прочие версии Netscape 4 тоже испытывают разнообразные трудности с загрузкой сжатых скриптов и стилей. А значит, мы должны отсекать этих агентов на стороне сервера и подставлять им неупакованный контент. Это довольно просто. Куда интереснее проблемы, возникающие у Internet Explorer (версии с 4 по 6).

Загружая сжатый с помощью gzip JavaScript, Internet Explorer порой некорректно распаковывает его или прерывает распаковку в процессе, отдавая клиенту половину файла. Если для вас критична работоспособность JavaScript, вы должны избегать отсылки сжатых скриптов по запросу IE. Даже в тех случаях, когда IE способен загрузить сжатый JavaScript, он зачастую не кэширует его, независимо от указаний, записанных в тегах (актуально для некоторых версий IE 5.x).

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

Перейти на страницу:

Все книги серии Компьютерра

Похожие книги

«Если», 2002 № 04
«Если», 2002 № 04

ФАНТАСТИКАЕжемесячный журналСодержание:Майк Резник. СЕКРЕТНАЯ ФЕРМА, рассказСтивен Бернс. НАДО ЖЕ, ЛЕТИТ! рассказДжеймс Ван Пелт. ИНФОМАН, рассказЖан-Клод Диньак. ОРХИДЕИ В НОЧИ, рассказБрайан Олдисс. ЗАМЕЧАТЕЛЬНЫЕ ИГРУШКИ НА ВСЁ ПРОШЛОЕ ЛЕТО, рассказВидеодром*Тема--- Андрей Вяткин. «СНОВА ЧЕРНЫЕ СИЛЫ РОЮТ МИРУ МОГИЛУ» (статья)*За кадром--- Дмитрий Байкалов. ТРИНАДЦАТЬ ЛЕТ СПУСТЯ (статья)*Рецензии*Интервью--- Владимир Хотиненко «Я БЕЗУСЛОВНО ДОВЕРЯЮ СУДЬБЕ»Леонид Кудрявцев. КУКУШОНОК, рассказДалия Трускиновская. МАРШРУТ ОККАМА, повестьЕвгений Харитонов. АТАМАНША (статья)ФактыКейдж Бейкер. СОРТИРОВКА, рассказОлег Овчинников. ПОШИВ ШУБЫ ИЗ ВАШЕГО МУТОНА, ИЛИ ТЕХНИКИ МАЛЕНЬКОЙ УФЫ (эссе)РецензииДмитрий Байкалов, Андрей Синицын. ИГРЫ БОЛЬШИХ ДЕТЕЙ (статья)Конкурс Банк идей--- Сергей Лукьяненко. ЕСЛИ ВЫ СВЯЖЕТЕСЬ ПРЯМО СЕЙЧАС…, рассказГеннадий Прашкевич. МАЛЫЙ БЕДЕКЕР ПО НФ, ИЛИ КНИГА О МНОГИХ ПРЕВОСХОДНЫХ ВЕЩАХ (продолжение эссе)КурсорPersonaliaОбложка Игоря Тарачкова к повести Далии Трускиновской «Маршрут Оккама»Иллюстрации: В. Овчинников, С. Голосов, А. Балдин, Т. Филиппова, А. Филиппов, И. Тарачков, С. Шехов

Андрей Вяткин , Брайан Олдисс , Владимир Хотиненко , Далия Трускиновская , Кейдж Бейкер

Фантастика / Журналы, газеты / Научная Фантастика / Фэнтези / Ужасы и мистика
«Если», 2012 № 12
«Если», 2012 № 12

Адам-Трой КАСТРО. НЕЧИСТЫЕ РУКИНачало карьеры уже известного нашим читателям межгалактического адвоката признано зарубежными любителями фантастики лучшей повестью, опубликованной на страницах журнала «Analog» в прошлом году.Евгений ЛУКИН. ТЕЛО, КОТОРОМУ СЛУЖИШЬ«Производственная повесть» — так определил автор жанр своей новой работы. В рамках «соцреализма», о котором у наших читателей лишь смутные представления, это воистину образцовое произведение. Но, как всегда, с поправкой на парадоксальность прозы любимого писателя.Рик УИЛБЕР. КОЕ-ЧТО НАСТОЯЩЕЕОказывается, ядерной программой нацистов занимался не только Штирлиц.Кайл КЁРКЛАНД. БЛОХА НА СПИНЕЗдесь можно усмотреть явную перекличку с классическим романом Роберта Хайнлайна. Однако не так все просто…Карл ФРЕДЕРИК. ПИЩЕВАЯ ЦЕПЬБалансировать на вершине — самая неустойчивая позиция.Пол МАКОУЛИ. БРЮС СПРИНГСТИНА мы-то думали, что подобные привидения — это наше ноу-хау.Александр РОЙФЕ. СПАСИБО ЗА ПОПЫТКУЧеловек хотя бы постарался. По нынешним временам это уже «зачет».Вл. ГАКОВ. ГЕНЕРАЦИЯ P.S.Данный обзор завершает цикл статей автора об экранизации произведений российских фантастов.ВИДЕОРЕЦЕНЗИИДля хорошего учителя не проблема даже мертвые ученики.Глеб ЕЛИСЕЕВ. ЖИЗНЬ ВНУТРИ ЖИЗНИЕще библейский Иона доказал на собственном примере: жить можно практически где угодно. Были бы желание и… необходимость.Дмитрий ВОЛОДИХИН. «В ОБЩЕМ, ВСЕ УМЕРЛИ…»…или Русский Апокалипсис понарошку и всерьез.Сергей ШИКАРЕВ. РАДОСТИ И ТЯГОТЫОдна из самых загадочных и сложных книг не только в мире НФ, но и в истории современной словесности, наконец добралась до российского читателя.Эдуард ГЕВОРКЯН. ЭПИТАФИЯ ГУТЕНБЕРГУДавнее пророчество Рэя Брэдбери сбывается, однако весьма причудливым образом.РЕЦЕНЗИИНи климатические, ни социальные, ни экономические потрясения не заставят рецензентов оставить свой книжный пост.КУРСОРБудут ли клонированы динозавры? И зачем?ПЕРСОНАЛИИУ них есть уникальный дар — делать нашу жизнь интереснее.ОБРАЩЕНИЕ К ЧИТАТЕЛЯММы провели вместе немало лет. И очень не хочется прощаться.

Вл. Гаков , Журнал «Если» , Сергей Александрович Шикарев , Сергей Некрасов , Эдуард Вачаганович Геворкян

Фантастика / Журналы, газеты / Научная Фантастика / Газеты и журналы / Прочее