Подтвердить что ты не робот

Как начать работу с веб-кешированием, CDN и прокси-серверами?

Я новичок программист, создающий стартап, который я (естественно) надеюсь создать большой объем трафика. Я принимаю проект django в dotcloud, который находится на Amazon EC2. У меня есть потоковые медиа (Http хотя, а не rmtp), поэтому ребята dotcloud рекомендовали мне пойти с CDN. Я также использую Amazon S3 для хранения и поэтому решил пойти с Amazon CloudFront как мой CDN.

Пришло время, когда мне нужно обратить внимание на кеширование, и я потерян и смущен. Я совершенно новичок в этой концепции. Вся часть моих знаний взята из учебника, которое я только что прочитал (http://www.mnot.net/cache_docs/), и запутанный уик-энд провел консалтинговый google. Больше всего беспокоит то, что я даже не уверен, что мне нужно сделать для моего сайта.

  • В чем разница между CDN и прокси-сервером?

  • Возможно ли, что я захочу использовать службу кэширования (например, memcached, redis), CDN (CloudFront) и прокси-сервер (squid)?

  • Наш сайт управляется БД и создает динамически созданные списки, специфичные для местоположений пользователей. Можно ли кэшировать такой сайт? (Сами списки можно фильтровать через AJAX, поэтому URL-адрес может оставаться неизменным при производстве в значительной степени разных результатов. Например, example.com/some_url/может генерировать список из 40 объектов, но только 10, отображаемых на странице. фильтр, пользователь может получить 10 разных объектов, пока все еще находится в /some _url/)

  • Каковы наилучшие методы для сайта с высоким трафиком и богатым контентом?

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

Я не уверен, что задаю правильные вопросы. Просто чувствую себя очень потерянным. Я теперь построил 95% всего моего сайта и думал, что просто убираю детали, но кэширование - это еще одно важное событие. Любые рекомендации/советы/поощрения будут высоко оценены!

4b9b3361

Ответ 1

Сразу же начнем с кеширования...

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

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

Если вы установите для параметра expires заголовок в будущем, тогда браузер не задает этот вопрос, поскольку он знает, что он может использовать копию полученного ресурса.

Кэширование на этом уровне улучшает работу конечных пользователей и экономит вашу пропускную способность.

Из вашего краткого описания HTTP-кэширование может помочь с меньшими статическими файлами (прочитайте ch3 bookofspeed.com)

Кэширование БД в качестве memcached (и redis) используется для уменьшения нагрузки на базы данных (например) путем сохранения результатов в операции, а затем обслуживания их из кеша, а не повторения операции с базой данных)

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

CDNs и прокси-серверы...

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

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

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

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

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

Моя первая рекомендация заключалась бы в том, чтобы получить некоторый реальный мониторинг пользователей (RUM), даже если он создает ваш собственный Boomerang.js или Pion. Также посмотрите на инструменты мониторинга, такие как Cacti/Munin/CollectD, чтобы вы могли понять нагрузку на свои серверы.

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