2010-11-15 8 views
2

Je travaille sur un site public qui ne sera bientôt plus 100% public. Les utilisateurs payants pourront accéder à 100% des fonctionnalités tandis que les utilisateurs "anonymes" accéderont à une version réduite.Conseil pour implémenter une solution de cache pour un site

Le problème est que les utilisateurs anonymes et les utilisateurs payants accéderont aux mêmes pages, mais verront des choses différentes.

Je me demande comment continuer à utiliser le cache pour toutes les pages. Je dois 100% sûr que je montre le contenu correct pour chaque type d'utilisateur. Sera extrêmement mauvais pour montrer une version cachée du site payé à un utilisateur anonyme (et l'inverse).

De préférence, sans rien ajouter à l'URL pour différencier le type d'utilisateur.

Merci!

Répondre

1

Vous pouvez utiliser le cache d'application pour vos données d'entreprise, qui est essentiellement un dictionnaire de paires de valeurs clés, dans lequel vous pouvez placer tout ce que vous voulez. Ensuite, vous pouvez vérifier par programme si elles sont connectées. Vous serez toujours en train de restituer la page à chaque visite, mais si tout va bien, la récupération des données mises en cache fournira l'amélioration de performance requise.

Sinon, il pourrait être possible to turn off the output-cache programatically, as described in this question.

Citation this answer from David Ebbo:

En OnInit:

if (yourArbitraryCondition) { 
    OutputCacheParameters outputCacheSettings = new OutputCacheParameters(); 
    outputCacheSettings.Duration = 60; 
    InitOutputCache(outputCacheSettings); 
} 
+0

+1 Merci pour votre aide. "Cache d'application" (ou objet de cache) est un must et nous l'utiliserons mais nous devons gérer les pics éventuels sur le site public avec les paramètres "HTTP Cache" afin que la batterie de serveurs web ne soit pas tuée. – StackOverflower

1

Je pense que ce que vous cherchez serait accompli par l'option de VaryByCustom pour la mise en cache de sortie . En utilisant ceci, vous définissez une fonction pour renvoyer une valeur de paramètre personnalisée utilisée lors de la récupération de la version en cache d'une page afin que les utilisateurs obtiennent leur propre version personnalisée et que tous les utilisateurs anonymes voient la même version en cache certains ont la même valeur. Voici un lien avec plus d'informations: http://aspadvice.com/blogs/ssmith/archive/2007/10/29/VaryByCustom-Caching-By-User.aspx

Pour la mise en cache de données par programmation, vous devez utiliser l'ID utilisateur dans le cadre de la clé pour récupérer les données afin d'obtenir le même effet.