Private vs Public в Cache-Control

Можете ли вы описать пример, указывающий разницу между Public и Private Cache-Control в приложениях asp.net, размещенных в IIS.

Я читал в MSDN, что разница заключается в следующем:

Public: Устанавливает Cache-Control: public, чтобы указать, что ответ кэшируется клиентами и общим (прокси) кэшем.

Закрыто: Значение по умолчанию. Устанавливает Cache-Control: private, чтобы указать, что ответ кэшируется только на клиенте, а не на общем кэше (прокси-сервер).

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

Например, что мне делать, если у меня есть два веб-сервера с одним и тем же приложением? Есть ли что-нибудь, чтобы следить за тем, выбираю ли я частный или публичный?

Ответ 1

Единственное различие заключается в том, что с помощью Private вы не позволяете прокси-серверам кэшировать данные, которые проходят через них. В конце концов, все это сводится к данным, содержащимся в отправляемых вами страницах/файлах.

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

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

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