Маркетер
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
YouTube 154 Подписчики
Telegram 241 Подписчики
VK 0 Подписчиков
Маркетер
Маркетер
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
  • Серверные технологии

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

  • 16.05.2003

Автор статьи: Дмитрий Турецкий

>

 

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

[тонкости кеширования]материал подготовил: Дмитрий Турецкий
16.05.2003
 

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

Одна из самых важных вещей, которые необходимо понять при организации кеширования страниц, заключается в том, что каждый файл кешируется по отдельности. Например, если у вас есть html-страница, содержащая картинку (<img src=»http://www.myhost.ru/img/pic.gif»>), то браузер выполнит два запроса — один для страницы и второй — для картинки. При этом никто не мешает вам указать для каждого из этих файлов разное время модификации и разное время жизни.

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

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

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

Показ рекламы организовать тоже не очень сложно. В случае баннеров все делается так же, как и со счетчиком, а если вы выводите текстовую рекламу, то проще всего сделать так, чтобы ваш рекламный скрипт генерировал код JavaScript, а в самой страничке вставить, скажем,
<SCRIPT LANGUAGE=»JavaScript» SRC=»http://www.myhost.ru/advert.cgi?page=article14″></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, который даст достаточно подробную информацию о том, насколько хорошо будут кешироваться страницы.

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

  • кешируем свой сайт
  • HTTPLook
  • Show Headers Tool
  • Cacheability Engine Query
  • кеширование динамического сайта

 

Первоисточник — www.hostinfo.ru

Алексей Волков

Предыдущий материал
  • Дизайн

Стратегия веб-дизайна

  • 15.05.2003
  • Алексей Волков
Read More
Следующий материал
  • Ваш интернет-сайт

Кому и зачем нужен сайт

  • 20.05.2003
  • Алексей Волков
Read More
Вас также может заинтересовать
Read More
  • PHP

Определение расположения по IP адресу на PHP

  • 4yvak
  • 13.06.2010
Read More
  • PHP

PHP — грамотная работа с файлами

  • Алексей Волков
  • 14.11.2009
Read More
  • Серверные технологии

Adobe для веб-разработчиков

  • Алексей Волков
  • 03.02.2005
Read More
  • CGI и Perl

Perl: жадный и торопливый возвращенец

  • Алексей Волков
  • 21.09.2004
Read More
  • CGI и Perl

Perl: найти и не сдаваться

  • Алексей Волков
  • 09.09.2004
Read More
  • CGI и Perl

Perl: бороться и искать

  • Алексей Волков
  • 08.09.2004
Read More
  • Серверные технологии

Компьютерный хронометр

  • Алексей Волков
  • 20.02.2004
Read More
  • SQL

WinMySQLadmin

  • Алексей Волков
  • 05.01.2004

Добавить комментарий

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

Свежие посты
  • Дайджест постов Сергея Людкевича
    • 12.09.24
  • Как юристы тормозят бизнес
    • 30.08.24
  • Продвижение оптовых кампаний в Яндекс Директ
    • 06.03.24
  • Cарафанное радио
    • 13.01.24
  • 5-55: История компании
    • 01.03.23
Маркетер
  • О проекте
  • Информационное спонсорство
  • Рекламным агентствам
  • Ссылки
(с) ООО "Маркетер". Официальный сайт. Маркетер: Статьи про рекламу, маркетинг, public relations, интернет

Введите ключевые слова для поиска и нажмите Enter