web-dev-qa-db-fra.com

Privé vs public dans Cache-Control

Pouvez-vous s'il vous plaît décrire un exemple indiquant la différence entre le contrôle de cache public et privé dans les applications asp.net hébergées dans IIS.

J'ai lu dans MSDN que la différence est la suivante:

Public: Définit Cache-Control: public pour indiquer que la réponse peut être mise en cache par les clients et les caches partagés (proxy).

Private: Valeur par défaut. Définit Cache-Control: private pour indiquer que la réponse ne peut être mise en mémoire cache que sur le client et non par des caches partagés (serveur proxy).

Je ne suis pas sûr d'avoir parfaitement compris le pour et le contre de chaque choix. Un exemple pour savoir quand ou ne pas l'utiliser serait génial.

Par exemple, que dois-je faire si j'ai deux serveurs Web hébergeant la même application? Y a-t-il quelque chose à surveiller si je choisis privé ou public?

118
ppolyzos

La seule différence est qu'avec Private, vous n'autorisez pas les mandataires à mettre en cache les données qui y transitent. En fin de compte, tout se résume aux données contenues dans les pages/fichiers que vous envoyez.

Par exemple, votre fournisseur de services Internet peut avoir un proxy invisible entre vous et Internet, c'est-à-dire mettre en cache des pages Web afin de réduire la quantité de bande passante nécessaire et de réduire les coûts. En utilisant cache-control: private, vous indiquez qu'il ne doit pas mettre la page en cache (mais permet à l'utilisateur final de le faire). Si vous utilisez cache-control: public, vous dites que tout le monde peut mettre la page en cache, le proxy en gardant alors une copie.

En règle générale, si c'est quelque chose tout le monde peut accéder (par exemple, le logo sur cette page) cache-control: public pourrait être meilleur, car plus il y a de gens qui le cachent, moins vous avez de bande passante. J'aurai besoin. Si quelque chose est lié à l'utilisateur connecté (par exemple, le code HTML de cette page contient mon nom d'utilisateur, il ne sera donc utile à personne) cache-control: private sera mieux, car les mandataires mettront les données en cache cela ne sera pas demandé par d'autres utilisateurs, et ils pourraient également conserver des données que vous ne souhaitez pas conserver sur des serveurs auxquels vous ne faites pas confiance.

Et, bien sûr, tout ce qui n'est pas public devrait avoir un cache privé. Sinon, les données pourraient être stockées sur un serveur proxy intermédiaire, où quiconque y aurait accès aurait accès.

218
salgiza