Je récupère une grande liste de nouvelles.Meilleure stratégie de mise en cache dans ce scénario particulier
Je veux utiliser la mise en cache de cette liste pour des raisons évidentes (exécuter une requête plus que nécessaire ne suffira pas).
Je lie cette liste à un répéteur sur lequel j'ai étendu pour activer la pagination (feuilleter entre les pages provoque le chargement de la page et donc une récupération de la liste à nouveau). La complication est le fait que ces nouvelles peuvent également être interrogées par date à partir d'une chaîne de requête 'année' qui est présente uniquement lors de l'interrogation des éléments de nouvelles par date.
est Ci-dessous le code pseudo pour ce que j'ai jusqu'à présent (coller le code réel ici prendrait trop de temps élaguant les tous les bits qui ajoutent simplement la confusion):
if(complete news items list are not cached OR querystring["year"] != null)
{
Int year = queryString["year"] (could be null)
Cache.Add(GetNewsItems(year));
}
else
{
return cached newsItems;
}
Le problème est que lorsque le Le chargement de la page des éléments de nouvelles (à cause de la publication d'un contrôle de radiomessagerie) le paramètre [année] de la chaîne de requête sera toujours rempli et réitérera ainsi GetNewsItems. Aussi - même si l'URL de la maison (ie aucune chaîne de requête) est alors dirigée vers - en effet il y a toujours une version mise en cache des news pour ne pas chercher à les récupérer - mais ils PEUVENT être là pour une année donnée et ne sont donc pas pertinents pour un type de recherche «toutes les années». Est-ce que j'ajoute une nouvelle entrée de cache pour marquer quelle recherche a été effectuée le plus récemment? Quelles sont les considérations à prendre en compte lors de la mise en cache? Je peux ajouter une nouvelle chaîne de requête si besoin est (de préférence non) - cela résoudrait-il le problème?
Spot sur Robin. Merci beaucoup pour ça!! –