Y at-il un moyen d'utiliser utiliser un profil de cache lors de l'ajout manuellement des éléments à la cache?

StackOverflow https://stackoverflow.com/questions/4761657

Question

Je cache de sortie dans mon application configurée à l'aide des profils de cache de sortie dans le web.config. Il est très pratique pour être en mesure de la mise en cache de configuration sur tous les éléments de sortie qui en ont besoin et être en mesure de régler tous les paramètres du cache en un seul endroit.

Cependant, je met également en œuvre la mise en cache dans mes données et couches logiques pour certains éléments. Il serait méthode pratique si je pouvais également faire référence à un profil au lieu de coder en dur les paramètres de mise en cache des données et des éléments logiques que je veux cache, mais il ne semble pas être un moyen de référencer un profil dans l'insert () sur le objet cache.

Alternativly, je pouvais construire ma propre section de configuration des profils de cache de liste des éléments ajoutés manuellement.

Était-ce utile?

La solution

Vous pouvez obtenir une liste de vos profils de cache de sortie faisant ceci:

private Dictionary<string, OutputCacheProfile> _outputCacheProfiles;
/// <summary>
/// Initializes <see cref="OutputCacheProfiles"/> using the settings found in
/// "system.web\caching\outputCacheSettings"
/// </summary>
void InitializeOutputCacheProfiles(
            System.Configuration.Configuration appConfig,
            NameValueCollection providerConfig)
{
    _outputCacheProfiles = new Dictionary<string, OutputCacheProfile>();

    OutputCacheSettingsSection outputCacheSettings = 
          (OutputCacheSettingsSection)appConfig.GetSection("system.web/caching/outputCacheSettings");

    if(outputCacheSettings != null)
    {
        foreach(OutputCacheProfile profile in outputCacheSettings.OutputCacheProfiles)
        {
            _outputCacheProfiles[profile.Name] = profile;
        }
    }
}

Et puis utilisez sur votre insert:

/// <summary>
/// Gets the output cache profile with the specified name
/// </summary>
public OutputCacheProfile GetOutputCacheProfile(string name)
{
    if(!_outputCacheProfiles.ContainsKey(name))
    {
        throw new ArgumentException(String.Format("The output cache profile '{0}' is not registered", name));
    }
    return _outputCacheProfiles[name];
}

  /// <summary>
    /// Inserts the key/value pair using the specifications of the output cache profile
    /// </summary>
    public void InsertItemUsing(string outputCacheProfileName, string key, object value)
    {
        OutputCacheProfile profile = GetOutputCacheProfile(outputCacheProfileName);
        //Get settings from profile to use on your insert instead of hard coding them
    }

Autres conseils

Si vous faites référence à C # 'objet s Cache.Insert vous pouvez ajouter un GUID à la clé pour que chaque profil a un GUID correspondant que vous pouvez extraire du cache lorsque vous souhaitez récupérer le profil plus tard.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top