Каталог статей
Поиск по базе статей  
Статья на тему Интернет » Интересное в сети » Хитрости кеширования

 

Хитрости кеширования

 

 

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

Одна из самых важных вещей, которые необходимо понять при организации кеширования страниц, заключается в том, что каждый файл кешируется по отдельности. Например, если у вас есть html-страница, содержащая картинку (<img src="/redir.php?url=www.myhost.ru%2Fimg%2Fpic.gif">), то браузер выполнит два запроса — один для страницы и второй — для картинки. При этом никто не мешает вам указать для каждого из этих файлов разное время модификации и разное время жизни.

Это может оказаться полезным во многих случаях.

загрузка...

 

 

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

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

Со статистистикой все относительно просто: достаточно включить в страницу, например, вызов какого-нибудь прозрачного GIF'а размером 1х1 пиксель, а потом смотреть access.log вашего веб-сервера. Причем никто не мешает этот GIF выводить также скриптом, который попутно будет, например, заносить данные о посещениях в базу данных, устанавливать cookies или производить еще какие-то действия. Можно даже картинку делать не 1х1, а динамически рисовать цифры посещений и показывать их на странице. Надо только не забыть сделать так, чтобы эта картинка в свою очередь не кешировалась.

Показ рекламы организовать тоже не очень сложно. В случае баннеров все делается так же, как и со счетчиком, а если вы выводите текстовую рекламу, то проще всего сделать так, чтобы ваш рекламный скрипт генерировал код JavaScript, а в самой страничке вставить, скажем,
<SCRIPT LANGUAGE="JavaScript" SRC="/redir.php?url=www.myhost.ru%2Fadvert.cgi%3Fpage%3Darticle14"></SCRIPT>

Для того чтобы картинки счетчиков или рекламы не кешировались, можно либо читать их с диска скриптом, а потом выводить соответствующие заголовки (как Content-Type, так и все имеющие отношение к кешированию), либо настроить свой веб-сервер таким образом, чтобы он автоматически выдавал «некеширующие» заголовки для нужных картинок. В частности, для Apache нужно включить mod_expires и mod_headers (оба эти модуля есть в стандартной поставке сервера, но по умолчанию выключены), сложить картинки, которые не должны кешироваться, в отдельную директорию и создать в ней соответствующий .htaccess файл. Например, такой файл может содержать строки:

ExpiresActive On
ExpiresByType image/gif A1

Первая строка включает mod_expires для данной директории, а вторая устанавливает Expires в 1 секунду после времени запроса файла для картинок в формате gif. Более подробно о настройках этих модулей можно (нужно!) прочитать в документации.

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

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

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

И еще одно важное замечание. Что бы вы ни делали, избежать кеширования вы не сможете. Более того, вы не сможете гарантировать, что все клиенты увидят свежую копию сайта — например, в какой-то локальной сети админ для экономии трафика может заставить свой прокси игнорировать все ваши установки о времени жизни страниц. Или, что еще «веселее», банально скопировать ваш сайт каким-нибудь «телепортом» и выложить в своей сети. Причем такие копии могут жить годами... Поэтому, меняя структуру сайта, не поленитесь сделать скрипт, который будет вызываться при 404-й ошибке, разбирать адреса запроса и перенаправлять посетителя на новую страницу (в Apache для этого используется директива «ErrorDocument 404»).

Ну, а для того чтобы посмотреть, как происходит общение между браузером и сервером, очень удобно использовать программу HTTPLook или онлайновый Show Headers Tool (это удобнее, чем «телнетиться» на 80-й порт и вручную давать запросы серверу). Кроме того, стоит воспользоваться онлайновым сервисом Cacheability Engine Query, который даст достаточно подробную информацию о том, насколько хорошо будут кешироваться страницы.

Ссылки по теме




Статья получена: hostinfo.ru
загрузка...

 

 

Наверх


Постоянная ссылка на статью "Хитрости кеширования":


Рассказать другу

Оценка: 4.0 (голосов: 16)

Ваша оценка:

Ваш комментарий

Имя:
Сообщение:
Защитный код: включите графику
 
 



Поиск по базе статей:





Темы статей






Новые статьи

Противовирусные препараты: за и против Добро пожаловать в Армению. Знакомство с Арменией Крыша из сэндвич панелей для индивидуального строительства Возможно ли отменить договор купли-продажи квартиры, если он был уже подписан Как выбрать блеск для губ Чего боятся мужчины Как побороть страх перед неизвестностью Газон на участке своими руками Как правильно стирать шторы Как просто бросить курить

Вместе с этой статьей обычно читают:

Кеширование динамического сайта

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

» Интересное в сети - 1346 - читать


Готовимся к зиме: тысяча и одна хитрость здоровой кожи

Осень - спокойная, "бархатная" пора для нашей кожи. Солнечные лучи уже не травмируют её, а иссушающие морозы еще не наступили. Как использовать осенние деньки с пользой?

» Здоровый образ жизни - 2119 - читать


Профессиональные хитрости для бухгалтера

Материал предоставлен журналом "Практическая бухгалтерия" / Как провести в бухучете начисление дивидендов учредителям общества с ограниченной ответственностью? Наша фирма (ООО) работает первый год. Еще ни разу выплату дивидендов не проводили.

» Бухгалтерия и аудит - 3881 - читать


Несколько хитростей при общении с оценщиком

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

» Строительство жилья - 1378 - читать


Хитрость гроссмейстера

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

» Направления в науке - 1771 - читать



Статья на тему Интернет » Интересное в сети » Хитрости кеширования

Все статьи | Разделы | Поиск | Добавить статью | Контакты

© Art.Thelib.Ru, 2006-2024, при копировании материалов, прямая индексируемая ссылка на сайт обязательна.

Энциклопедия Art.Thelib.Ru