ограничения прокси-сервера?

0

У меня есть более или менее обобщенный вопрос (ы) относительно прокси-серверов кэширования.

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

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

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

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

Stephen R
источник

Ответы:

0

Может ли прокси-сервер кэшировать отдельные изображения с веб-сайтов?

Да.

нужно ли будет снова запрашивать всю веб-страницу из-за ее динамического объема?

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


Вот краткий (отредактированный) пример захвата Wireshark Chrome, извлекающего веб-страницу из Superuser

Запрос клиента

GET /questions/419790/confused-by-cpu-model HTTP/1.1
Host: superuser.com
Connection: keep-alive
User-Agent: …Chrome…
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://superuser.com/questions
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: …

Ответ сервера

HTTP/1.1 200 OK
Cache-Control: public, max-age=60
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: Wed, 02 May 2012 19:41:23 GMT
Last-Modified: Wed, 02 May 2012 19:40:23 GMT
Vary: *
Date: Wed, 02 May 2012 19:40:23 GMT
Content-Length: 9831

Обратите внимание Cache-Control: public, max-age=60 и Expires: Wed, 02 May 2012 19:41:23 GMT это то, как сервер пытается контролировать, как каждая часть контента кэшируется. Страница вопросов суперпользователя может содержать десятки или сотни таких индивидуально извлеченных элементов.

Читать что W3C говорит о Cache-control

Поле общего заголовка Cache-Control используется для указания директив   что ДОЛЖНЫ соблюдаться всеми механизмами кэширования вдоль   цепочка запросов / ответов. Директивы определяют поведение, предназначенное для   предотвратить кэширование от нежелательного вмешательства в запрос или   ответ. Эти директивы обычно переопределяют кэширование по умолчанию   алгоритмы. Директивы кэширования являются однонаправленными в том смысле, что наличие   директивы в запросе не означает, что та же директива   будет дано в ответе.

потом

общественности
Указывает, что ответ МОЖЕТ быть кэширован любым кешем, даже если   обычно он не кешируется или кешируется только в   общий кеш. (См. Также Авторизация, раздел 14.8, для дополнительной информации.   подробности.)

частный
Указывает, что все или часть ответного сообщения   предназначен для одного пользователя и НЕ ДОЛЖЕН кешироваться общим   кэш. Это позволяет исходному серверу утверждать, что указанные части   ответа предназначены только для одного пользователя и не являются действительными   ответ на запросы других пользователей. Личный (не общий) кеш МОЖЕТ   кэшировать ответ. Примечание: это использование слова private only контролирует   где ответ может быть кэширован, и не может обеспечить конфиденциальность   содержание сообщения.

нет кэша
Если директива no-cache не указывает имя поля, то   кеш НЕ ДОЛЖЕН использовать ответ для удовлетворения последующего запроса   без успешной повторной проверки с сервером происхождения. Это позволяет   сервер происхождения, чтобы предотвратить кэширование даже кешами, которые были   настроен на возврат устаревших ответов на клиентские запросы.

и так далее - это большая предметная область.

RedGrittyBrick
источник
Потрясающие. Это вселяет в меня надежду, что это может многого добиться, если у меня будет достаточно работы и исследований. Итак, если я правильно понимаю (и с относительно слабым пониманием того, как работает контент веб-сайта), если прокси-сервер кэширует запрос на веб-страницу с динамическим контентом, сохранит ли он «старый» динамический контент? Например, на форуме (лучший пример, который я могу придумать по какой-то причине) у вас есть старые темы, которые не обсуждались какое-то время. Будет ли этот контент сохранен, а новые потоки обновлены, что приведет к снижению сетевой активности?
Stephen R
Зависит от содержимого и срока действия кэша по понятным причинам.
@StephenR: смотрите обновление. Если вы хотите понять это, я считаю, что необходимо провести предварительное чтение.
RedGrittyBrick