À ma connaissance, la principale différence est que la session s'applique à chaque utilisateur, tandis que le cache s'applique aux éléments de l'application.
Comme indiqué dans les autres réponses, vous pouvez stocker des informations par utilisateur dans le cache, à condition de fournir une clé (soit par session, soit par cookie). Vous auriez alors plus de contrôle pour faire expirer les éléments dans le cache et aussi pour définir des dépendances sur eux. Ainsi, si la table de données en question est appelée à changer régulièrement, la mise en cache est probablement une option appropriée. Sinon, s'il s'agit d'une table statique, la session pourrait être plus appropriée. Steven Smith a réalisé une excellente vidéo sur la mise en cache sur le site dnrtv. qui vaut la peine d'être vérifiée.
Cela dépend vraiment de ce que vous essayez d'accomplir, du temps dont vous disposez. Il existe d'autres solutions à envisager en ce qui concerne la manière de stocker l'état dans une application. Selon la taille de la table, vous pouvez envisager de stocker l'état dans un cookie (crypté s'il s'agit d'informations sensibles). S'il s'agit de données liées à l'application, vous pouvez également utiliser un champ statique sur une page ou une classe. Il existe également l'objet Application.
Mise à jour : Je pense que la question clé que vous devez vous poser, est de savoir qui doit voir ces données.
Are they going to access the data frequently?
(Non, pas la peine).
Is it going to change?
(Non, utilisez un champ statique ou une application).
Is it acceptable for user a and user b to see the same results?
(Non, utilisez le cache avec une clé comprenant le nom d'utilisateur et le terme de recherche).
(Oui, utilisez le cache en utilisant une clé du terme de recherche).
Honnêtement, si vous n'êtes pas très avancé dans votre développement, j'envisagerais de reporter la question de la mise en cache/état à une date ultérieure - vous n'en aurez peut-être même pas besoin.
Les trois premières règles de l'optimisation des performances sont les suivantes : 1. Mesurez, 2. Mesurez encore. 3. Mesurez encore...
0 votes
Vous mettez en cache les données que vous voulez que tous les utilisateurs utilisent sur l'application. Des données qui pourraient ne pas changer historiquement. La session doit être utilisée pour stocker des données dans le contexte d'un utilisateur, par exemple pour filtrer les résultats des données mises en cache.
3 votes
HttpContext.Current.Cache vs HttpRuntime.Cache
?1 votes
@Kiquenet J'ai admiré votre effort, en effet.
0 votes
@Kiquenet Alors, laissez-moi vous dire ce que j'en pense. HttpContext concerne la requête en cours. Il n'est vivant que pendant la durée de vie de la requête. Mais HttpRuntime reste vivant tout le temps. Ainsi, votre cache est vivant aussi longtemps que la durée d'expiration que vous lui attribuez. Je ne suis pas sûr, mais c'est ce que j'ai vu lorsque je l'ai testé.