Vous avez raison dans vos hypothèses.
Votre directive OutputCache indique au mécanisme de mise en cache de sortie de mettre en cache l'intégralité de la page rendue pour une URL spécifique, pendant 600 secondes. Dans votre exemple simple, vous n'utilisez probablement aucune chaîne de requête, cependant, la déclaration VaryByParam dans la directive vous permet de spécifier un paramètre de chaîne de requête qui garantit que chaque valeur différente de ce paramètre est mise en cache séparément. Par exemple, si vous aviez:
<%@ OutputCache Duration="600" VaryByParam="ProductID"%>
alors ces trois paramètres différents, seraient tous mis en cache individuellement URL, et en changeant la valeur de la « ProductID » à quelque chose ne serait pas encore mis en cache en sorte que la page est traitée et rendue par correctement l'exécution ASP.NET:
http://www.example.com/viewproduct.aspx?ProductID=123
http://www.example.com/viewproduct.aspx?ProductID=3
http://www.example.com/viewproduct.aspx?ProductID=67
dans votre exemple, sur votre bouton clic, la page a déjà été rendue précédemment (et mises en cache) et lorsque vous postez à nouveau il n'y a pas de différence dans l'URL que vous êtes En effet, l'exécution d'ASP.NET vous affichera la page mise en cache sans passer par le Le processus de re-rendu. En dehors de la modification de la valeur d'un paramètre "VaryByParam", la directive OutputCache est plutôt une approche "tout ou rien" de la mise en cache des pages. Toutefois, il existe un attribut "VaryByContol" pour la directive, qui ne peut être utilisé que dans les contrôles utilisateur ASP.NET, plutôt que dans une page Web ASP.NET complète.
De votre question, il semble plus que vous avez besoin d'enquêter partiel mise en cache des pages. Soit cela ou un mécanisme pour invalider le cache quand un événement se produit. Cela est généralement fait en ajoutant une "dépendance de cache".
Pour cela, les liens suivants devraient aider:
Caching Portions of an ASP.NET Page
Tip/Trick: Implement "Donut Caching" with the ASP.NET 2.0 Output Cache Substitution Feature
Programmatically Removing a Page from the OutputCache
Pouvez-vous publier un exemple hot pour utiliser mes paramètres de publication en tant que VaryByParam? – lnetanel
sûr, <% @ OutputCache Duration = "600" VaryByParam = "YourPostParam1, YourPostParam2, (tous les paramètres GET également), ..."%> – user134706
Vous avez tout simplement compris cela avant de trouver ce post - nous avons en fait eu un problème avec un déploiement en direct parce que nous avions VaryByParam mis à "aucun" où les pages postées à eux-mêmes! –