Приватне проти громадського в кеш-контролі


127

Чи можете ви, будь ласка, описати приклад, який вказує на різницю між громадським та приватним кеш-керуванням в додатках asp.net, розміщених в IIS.

Я читав у MSDN, що різниця полягає в наступному:

Загальнодоступне: Встановлює кеш-контроль: public, щоб вказати, що відповідь може кешуватися клієнтами та спільними кешами (проксі).

Приватне: значення за замовчуванням. Встановлює кеш-контроль: приватний, щоб вказати, що відповідь кешується лише на клієнті, а не за допомогою загальних кешів (проксі-сервер).

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

Наприклад, що мені робити, якщо у мене є два веб-сервери, що розміщують один і той же додаток? Чи варто спостерігати, якщо я вибираю приватну чи публічну?

Відповіді:


237

Єдина відмінність полягає в тому, що за допомогою Private ви не дозволяєте проксі-серверам кешувати дані, що пересуваються через них. Зрештою, все зводиться до даних, що містяться на сторінках / файлах, які ви надсилаєте.

Наприклад, ваш Інтернет-провайдер може мати невидимий проксі-сервер між вами та Інтернетом, тобто кешування веб-сторінок для зменшення необхідної пропускної здатності та зниження витрат. Використовуючи кеш-контроль: приватне, ви вказуєте, що він не повинен кешувати сторінку (але дозволяє кінцевому користувачеві це робити). Якщо ви використовуєте кеш-контроль: public, ви говорите, що добре, щоб усі кешували сторінку, і тому проксі зберігає копію.

Як правило, якщо це те , що кожен доступу може (наприклад, логотип на цій сторінці) кеш-контроль: громадськість могла б бути краще, тому що чим більше людей , що кешувати, тим менше пропускної здатності вам потрібно. Якщо це щось, що пов'язане з підключеним користувачем (наприклад, HTML на цій сторінці включає моє ім'я користувача, тому це не буде корисним іншим) кеш-контроль: приватне буде краще, оскільки проксі-сервери будуть кешувати дані це не вимагатиме інших користувачів, і вони також можуть зберігати дані, які ви не хочете зберігати на серверах, яким ви не довіряєте.

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


39
Єдина відмінність полягає в тому, що з Private ви не дозволяєте проксі-серверам кешувати ... Я здогадуюсь, що це була помилка. +1 у відповідь крім цього. Варто додати, що приватний не пропонує жодної ступеня безпеки, його все одно можуть помітити агенти посередині. Це просто означає, що жоден "чесний" агент не дасть це комусь іншому замість щойно створеної відповіді.
Джон Ханна

Виправлено! Це смішно, тому що я перечитував його кілька разів перед публікацією, але, мабуть, знав, що "не" повинен був бути там, тому мій розум просто додав його: D. І так, +1 до вашого коментаря, оскільки слід зазначити, що, хоча це рекомендується для даних, пов’язаних з користувачем, приватне не замінить справжню безпеку (SSL).
salgiza

Так легко написати або "не", коли не слід, або пропустити це, коли слід. Я знаю, що велика кількість моїх саморедагувань (у різних областях) виправляє той самий друк.
Джон Ханна

15
Отже, якщо ми нічого не вказуємо, чи поведінка за замовчуванням є "публічною" чи "приватною"?
Pacerier

1
@Honey, але може бути кілька клієнтів, які використовують один і той же проксі. Якщо добре надіслати всім клієнтам однакову відповідь, тоді добре кешувати на рівні проксі, інакше може бути добре кешувати клієнта (все ще є випадки, коли навіть це погана ідея), але не на проксі.
Джон Ханна
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.