Статьи

Кеш или чек?

Медленная загрузка страниц — самая большая претензия, которую испытывают сегодняшние интернет-пользователи. Учитывая, что большинство людей все еще используют модем, это влияет на многих пользователей. Метка «56k» на вашем модеме означает «56000 бит (данных) в секунду». Поскольку размер одного символа составляет около 10 бит, для загрузки (статического) файла 5 КБ потребуется около 1 секунды. Но на самом деле скорость вашего соединения по аналоговой телефонной линии составит около 40 тыс., И если учесть, что индексная страница форумов Sitepoint имеет размер около 80 тыс., То при подключении к 40 тыс. нагрузить.

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

Время имеет существенное значение

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

Что такое кеш?

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

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

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

То же самое относится и к Интернету. Ваш Интернет-провайдер неизбежно использует какой-то кэш по той простой причине, что он повышает скорость доставки веб-страниц на ваш экран. Если вы когда-нибудь задумывались о том, как работает Интернет, вот краткий обзор. Пользователь подключается к серверу, который подключен к сети. Затем пользователь вводит URL (унифицированный указатель ресурса или адрес) страницы, которую он хочет просмотреть. Это отправляет запрос на сервер интернет-провайдера. Затем этот сервер ищет указанный адрес в Интернете. Если он ничего не находит, он возвращает ошибку (обычно ошибка 404, документ не найден). Если он находит соответствующий адрес, он получает с хост-сервера копию нужного вам документа и возвращает ее в ваш браузер, отображая на экране.

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

Как работает кэш?

Рассмотрим только что возникшую процедуру: вы отправили запрос на файл, затем сервер отправился на поиски файла и, если он его нашел, получил для вас копию. Теперь это может показаться единственным способом работы такой операции, но на самом деле она довольно неэффективна. Представьте, что в любой момент тысячи пользователей могут запросить одну и ту же страницу. Без кеша сервер интернет-провайдера должен постоянно возвращаться к одному и тому же адресу и получать документ для каждого отдельного запроса. Однако, если используется веб-кеш, процедура немного изменяется.

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

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

Кажется простым, не так ли?

Ну, концепция есть, но на практике это может быть сложно. Приведенный выше пример описывает, что происходит с пользователями удаленного доступа. Однако в этом процессе существуют и другие стадии. Например, большинство пользователей Windows 9x и NT имеют кеш на своем компьютере, помеченный как «Кэш» или «дружественный Microsoft» термин «Временные файлы Интернета».

Чтобы проверить это, найдите в Интернете сайт со статическим HTML-файлом. Дайте странице полностью загрузиться, затем закройте браузер и отключите интернет-соединение. Снова откройте браузер, убедившись, что он установлен на «Работа в автономном режиме», и верните веб-адрес обратно в браузер. Если все работает должным образом, страница должна отображаться, даже если у вас нет текущего подключения к Интернету.

Тогда мы видим, что процедура просмотра веб-страницы снова изменилась. Теперь процесс выглядит следующим образом: запрос страницы с вашего компьютера, проверка кеша вашего компьютера, затем к провайдеру, провайдер проверяет свой кеш, затем, наконец, он идет и получает страницу из фактического источника. Беспокоиться? Я расскажу о проблемах, которые это вызывает позже.

Не на модеме?

Этот процесс предназначен для одиночных пользователей при коммутируемом соединении. Рассмотрим ситуацию с крупным бизнесом, где, возможно, 1-500 человек хотят подключиться к Интернету. Очевидно, что у каждого пользователя нет модема на своем компьютере, потому что для этого потребуется телефонная линия для каждого пользователя. Вместо этого все пользователи находятся в локальной сети (LAN), которая имеет очень высокоскоростное подключение к Интернету. Запросы на страницу в Интернете отправляются через сеть на прокси-сервер (или маршрутизатор), который затем обрабатывает запросы.

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

Любой, кто платит за хостинг сайта, знаком с этой концепцией. По сути, это ограничение на объем данных, которые строка данных может передавать одновременно. Для каждой запрашиваемой страницы размер ее файла вычитается (или накапливается в зависимости от того, как вы на нее смотрите) из / в величину разрешенной пропускной способности. Например, ваш хост может сказать, что у вас 4 ГБ пропускной способности в месяц. Это означает, что ваша 30k веб-страница может быть запрошена 133333 раза (или около того). Если ваша страница будет запрашиваться чаще, вам придется платить за превышение пропускной способности.

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

Ну и что?

Хорошо, хотите верьте, хотите нет, но эти прокси-серверы также можно настроить на использование кэша. Мне посчастливилось поговорить с одним из системных администраторов крупной корпоративной локальной сети, который только что вложил значительную сумму денег в новое средство кэширования.

Вопрос 1: Почему вы используете кеш?

  1. Локально удерживаемые объекты извлекаются намного быстрее, чем удаленные, поэтому сеть получает веб-контент быстрее.
  2. Стоимость. В настоящее время компания взимает плату за используемую международную пропускную способность, и с помощью кэширования эта стоимость может быть минимизирована.

Вопрос 2: Каковы возможности кеша (т.е. насколько он большой)? Как это организовано?

У нас есть (в настоящее время) 2 машины Dell 2550 с 1,5 ГБ оперативной памяти и 18 ГБ кэш-памяти на каждой. Вместе они ежедневно обрабатывают около 8 миллионов веб-запросов. Мы также работаем с другими кешами в Ноттингеме и национальном кеше Великобритании (если запрашиваемые веб-страницы находятся в этих кешах, они выбираются оттуда, а не напрямую с сайтов).

Вопрос 3: Как часто обновляются кэшированные страницы?

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

Таким образом, мы видим, что маршрут для веб-страницы снова изменился. Он больше не запрашивает страницу, и ваш браузер волшебным образом возвращает его, он выглядит примерно так:

Запросить страницу> Кэш ПК> Кэш прокси> Кэш ISP> Назначение

… С возможностью добавления в локальные / региональные кеш-центры, а также в национальный кеш-центр и, возможно, в международный кеш-центр (переговоры продолжаются!).

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

Но, к сожалению, это часто приводит к замедлению доступа в Интернет! Почему? Поскольку кеши настолько велики, что кешируется практически каждая запрашиваемая страница, и серверу приходится перелистывать миллионы страниц, проверяя, есть ли у него копия страницы.

Другая проблема с кэшем

Я уверен, что это случилось с вами на том или ином этапе: вы запрашиваете страницу, и она выглядит старой. Вам не дали последнюю версию, потому что кэш выполнил быстрое сканирование, просмотрел адрес страницы и вернул его вам. Обычно это легко исправить с помощью жесткого обновления (Ctrl & F5 на компьютере под управлением Windows / IE), при условии, что кэш настроен соответствующим образом (т.е. проверяет все атрибуты [время, размер файла и т. Д.), А не только имя файла ,

Как узнать, использует ли ваш провайдер кеш?

Ну, самый простой способ — проверить настройки подключения. Если вы работаете на компьютере с Windows, посмотрите «Свойства обозревателя»> «Подключение» и нажмите «Настройки». Если поля под прокси-сервером заполнены, то вы, вероятно, используете кеш, что, скорее всего, приведет к снижению скорости загрузки. Вы можете исправить это, отключив прокси-сервер, что заставит ваш браузер обходить прокси-кеш.

Максимизация кэша вашего компьютера

Как я уже говорил ранее, то, как кеш влияет на вас, является сугубо личным делом (и будет сильно зависеть от скорости вашего провайдера), но вы можете отключить кеширование на локальном компьютере, выбрав «Свойства обозревателя»> «Временные файлы Интернета». > Настройки и перетаскивая ползунок вниз до 1mb. Другая вещь, которую нужно сделать, это время от времени очищать содержимое папки временных файлов Интернета. Помните, однако, что это может означать, что ваше интернет-соединение медленнее, потому что оно должно затем получить свежую копию с сервера.

UnCacheables

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

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

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

Когда спрошено об этом, системный администратор ответил:

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

Таким образом, вы можете быть уверены, что кэширование не создает угрозы безопасности.

Принять кеш?

По моему опыту, следует избегать использования средств кэширования, используемых основными провайдерами (например, Freeserve, в Великобритании), просто потому, что центры кэширования настолько велики, что доставка страниц значительно замедляется. Тем не менее, локальное кэширование — это хорошо. Посмотрев на «Свойства обозревателя»> «Временные файлы Интернета» (в IE), вы узнаете, что происходит с вашим ПК.

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

Если вы используете какое-либо программное обеспечение для маршрутизации / прокси, то у вас есть полный контроль над кэшированием. В моем доме в Саутгемптоне у нас есть три компьютера, которые подключаются к Интернету через прокси-сервер. Прокси был настроен для кэширования только определенных вещей, таких как * .jpg, * .gif и * .swf, так как они загружаются дольше и часто используются повторно на разных страницах. Поскольку сама фактическая страница не кэшируется, я могу быть уверен, что сама страница является новой, что, если страница изменилась, будут загружаться любые новые изображения, но любые не новые изображения просто отображаются из кэша.

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

Управление кэшем как веб-мастер

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

Первый довольно прост, используя соответствующие заголовки. Существует несколько тегов META, которые вы можете использовать для управления кэшированием:

<META HTTP-EQUIV="cache-control" CONTENT="no-cache">    
   
<META HTTP-EQUIV="pragma" CONTENT="no-cache">    
   
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">

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

Второй трюк заключается в использовании динамических страниц, если это возможно, поскольку они не кэшируются. Даже если база данных или динамический контент не задействованы, можно остановить кэширование страниц, добавив некоторую переменную ко всем вашим страницам, такую ​​как отметка времени или случайное число. Это заставит браузер думать, что страница отличается, и каждый раз будет получать новую копию, хороший пример которой можно увидеть на www.genie.co.uk .

Кэшировать или….?

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

Для получения дополнительной информации о кэшировании, посмотрите на CacheNow! проект .