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

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

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

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

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

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

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

решение1

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

Да.

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

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


Вот краткий (отредактированный) пример захвата 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, для получения дополнительных сведений.)

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

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

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

Связанный контент