8 Stimmen

Ändern des OutputCache auf der Grundlage der URL

Ich habe eine Seite, die ich mit der OutputCache-Direktive zwischenspeichern möchte. Ich verwende jedoch ein URL-Rewriter-Modul, um mehrere URLs auf diese Seite zu leiten, jede mit einem anderen Inhalt.

Gibt es eine Möglichkeit, den Cache der Ausgabe für jede URL zu verwenden? Es gibt keine anderen Kriterien, nach denen ich die Cache-Ergebnisse variieren muss.

11voto

Blatfrig Punkte 581

Letztlich war das Problem recht einfach zu beheben.

  1. Fügen Sie der Seite, die zwischengespeichert werden soll, die folgende Direktive hinzu:

    < %@ outputcache duration="600" location="Downstream" varybyparam="none" varybycustom="RawURL" %>

  2. Fügen Sie diese Methode in die Datei global.asax ein

    public override string GetVaryByCustomString(HttpContext context, string custom)
    {
        switch (custom.ToUpper())
        {
            case "RAWURL":
                return context.Request.RawUrl;
    
            default:
                return "";
        }
    }

0voto

Justin Swartsel Punkte 3421

Programmatisch können Sie die Caching-Optionen mit Antwort.Cache . Sie können Ihre Querystring-Variable einschalten und je nach Fall die Eigenschaften von Antwort.Cache angemessen.

MSDN zum Cache-Objekt
Ein weiterer hilfreicher Artikel von aspalliance.com

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X