wobei Duration und VaryByP sind"/> wobei Duration und VaryByP sind">
Heim > Artikel > Backend-Entwicklung > Eine kurze Analyse der Seiten-Caching-Technologie von asp.net
Ich wollte schon lange mehr über Technologie schreiben
Erstens, damit ich mich besser auskenneAbfrage, natürlich werden alle bald aktualisiert. Ha
Kein Klatsch mehr
Ich habe heute einfach Zeit, es zusammenzusetzen
SeiteCache
Verwenden Sie die OutputCache-Direktive
<%@ OutputCache Duration="3600"
Location="Any"
VaryByCustom="browser"
VaryByParam="RequestID" %>
Die Attribute „Duration“ und „VaryByParam“ sind erforderlich
Location steuert den Speicherort des Seitencaches
Standort
|
Bedeutung | ||||||||||||
Beliebig td> | Der Standardwert bedeutet, dass die Ausgabe der Seite im Client-Browser, in jedem „Downstream“-Client (z. B. einem Proxyserver) oder im Webserver selbst zwischengespeichert werden kann | ||||||||||||
Client | Gibt an, dass der Ausgabecache nur im lokalen Cache des anfordernden Clients (d. h. des Browsers) gespeichert werden kann | ||||||||||||
Downstream | Gibt an, dass der Ausgabecache auf jedem Gerät gespeichert werden kann, das HTTP1.1-Caching unterstützt (z. B. ein Proxyserver) | ||||||||||||
Server | Gibt an, dass der Ausgabecache auf dem Webserver gespeichert wird | Keine | Gibt an, dass das Ausgabe-Caching für diese Seite deaktiviert ist
Mit der Dauer können wir steuern, wie lange die Seite im Cache verbleibt (in Sekunden).
VaryByParam ermöglicht es uns, verschiedene Versionen der Seite zwischenzuspeichern. Im obigen Beispiel ist VaryByParam auf RequestID gesetzt, sodass ASP.NET unterschiedliche Werte des RequestID-Parameters verwendet. Diese Werte werden entweder in der HTTP-GET-Abfrage übergeben string , oder Es wird in den Parametern von HTTP POST übergeben. Sie können die Anwendung zwischen verschiedenen Benutzern unterscheiden lassen, indem Sie den Wert des RequestID-Parameters überprüfen. Durch Platzieren von VaryByParam="RequestID" in der OutputCache-Direktive der Seite können Sie ASP.NET unterschiedliche Versionen der Seite für jeden Benutzer zwischenspeichern lassen.
Wenn Sie keine unabhängigen Versionen der Seite basierend auf dem Wert des Parameters zwischenspeichern möchten, setzen Sie VaryByParam einfach auf „none“.
Sie können ASP.NET auch bitten, eine Version der Seite für jede mögliche Parameter-Array-Kombination zwischenzuspeichern. Setzen Sie dazu VaryByParam auf *.
Die Attribute VaryByHeader und VaryByCustom ähneln VaryByParam insofern, als sie die Angabe ermöglichen, wann eine neue zwischengespeicherte Version einer Seite erstellt werden soll.
VaryByHeader ermöglicht es uns, nicht gerichtete Versionen einer Seite basierend auf einer durch Semikolons getrennten Liste von HTTP-Headern zwischenzuspeichern.
VaryByCustom ermöglicht uns, wenn es auf Browser eingestellt ist, verschiedene Versionen basierend auf dem Namen des Browsers und den Hauptversionsinformationen zwischenzuspeichern. Wir können ihn auch auf den Namen einer benutzerdefinierten Methode setzen, um unsere eigene Logik zu implementieren und die zwischengespeicherte Version zu steuern.
Fragment-Cache
kann die Benutzer-Steuerung verwenden, um die Seite zu segmentieren und zwischengespeicherte Anweisungen in die ASCX-Datei zu schreiben, anstatt zwischengespeicherte Anweisungen in die ASPX-Datei zu schreiben dass ASP.NET nur die Ausgabe des ASCX-Fragments zwischenspeichern kann. Wenn die Kopf- und Fußzeile grundsätzlich identisch sind, ist im Allgemeinen kein Neuladen erforderlich. Wenn sich Daten jedoch dynamisch ändern, können sie nicht zwischengespeichert werden, da das Programm nach dem Zwischenspeichern keine Instanz davon erstellt, um die Datenanzeige zu aktualisierenEs kann also nur warten, bis die Lebensdauer abgelaufen ist für Diese Situation ist nicht für das Zwischenspeichern von Seitenfragmenten geeignet.
Hinweis:
1. Beachten Sie, dass das Fragment-Caching die Standortfunktion nicht unterstützt. Der einzige zulässige Ort zum Zwischenspeichern von Seitenfragmenten ist der Webserver. Dies liegt daran, dass Fragment-Caching eine neue Funktion in ASP.NET ist und daher von Browsern und Proxyservern nicht unterstützt wird.
2. Der Fragment-Cache verfügt über eine weitere Funktion, die im Seiten-Cache nicht zu finden ist – VaryByControl. Mit dem VaryByControl-Attribut können Sie eine durch Semikolons getrennte Liste von Zeichenfolgen angeben, die die Namen der in einem Benutzersteuerelement verwendeten Steuerelemente darstellen. ASP.NET generiert eine zwischengespeicherte Version des Benutzer-Widgets für jede unterschiedliche Wertekombination.
Datencache
Low-Level-API ist die Cache-Klasse, die sich im System.web.CachingNamespace befindet ASP.NET. Sie können damit ressourcenintensive Daten zwischenspeichern. Die Verwendung der Cache-Klasse ist so einfach wie bei Session- und Application-Objekten. Es gibt nur ein Cache-Objekt pro Anwendung. Dies bedeutet, dass es sich bei den im Cache mithilfe des Cache-Objekts gespeicherten Daten um Daten auf Anwendungsebene handelt. Um die Sache noch einfacher zu machen, stellt die CacheEigenschaft der Page-Klasse die Cache-Objektinstanz der Anwendung im Code zur Verfügung.
Über das Cache-Objekt zwischengespeicherte Daten werden im Speicher der Anwendung gespeichert. Dies bedeutet, dass die Lebensdauer dieser Daten den Neustart der Anwendung nicht überschreitet (tatsächlich entspricht dies den in den Anwendungs- und Sitzungsobjekten gespeicherten Daten, es sei denn, der Sitzungsmodus StateService oder SQL State wird zum Speichern von Sitzungsdaten verwendet).
Die spezifische Verwendung und Syntax sind die gleichen wie bei Sitzung und Anwendung. Bei der Rückkonvertierung ist auf die erzwungene Typkonvertierung des entsprechenden Typs zu achten.
Dies ist nicht die einzige Möglichkeit, Cache-Elemente zum ASP.NET-Cache hinzuzufügen. Das Cache-Objekt verfügt über zwei Methoden, die Insert()-Methode und die Add()-Methode, die flexibler sind. Ihre Verwendung ist ähnlich, aber etwas anders: Die Methode
Insert() wird verwendet, um vorhandene Cache-Einträge im ASP.NET-Cache zu überschreiben.
Die Add()-Methode wird nur zum Hinzufügen neuer Cache-Elemente zum ASP.NET-Cache verwendet (sie schlägt fehl, wenn Sie sie zum Überschreiben vorhandener Cache-Elemente verwenden).
Jede Methode hat 7 Parameter und die Parameter beider Methoden sind gleich.
Beim Zwischenspeichern eines Elements können Sie dessen Relevanz angeben und ASP.NET mitteilen, dass das zwischengespeicherte Element im Cache verbleibt, bis ein bestimmtes Ereignis eintritt.
相关性值 |
含义 |
CacheDependency |
允许指定一个文件或缓存键。如果文件发生变化,对象就被删除。如果缓存键发生变化,对象也被删除。 |
DateTime |
这是一个DataTime值,指明缓存数据过期的时间(绝对过期时间) |
TimeSpan |
这是一个时间间隔,指明缓存数据在上一次访问后可以在缓存中保留多长时间(弹性过期时间) |
Verwenden Sie CacheItemPriority, um die Priorität der zwischengespeicherten Daten anzugeben, sodass Daten mit niedriger Priorität gelöscht werden können, wenn der Cache voll ist.
Prioritätswert
|
Bedeutung | ||||||||||||||||
Hoch |
Cache-Elemente, die auf diese Priorität eingestellt sind, werden am wenigsten gelöscht, wenn der Speicher knapp wird |
||||||||||||||||
AboveNormal |
Cache-Elemente, die auf diese Priorität eingestellt sind, haben Vorrang vor Cache-Elementen mit der Priorität „Normal“ oder niedriger |
||||||||||||||||
Normal |
Cache-Elemente, die auf diese Priorität eingestellt sind, werden früher beibehalten als Cache-Elemente mit den Prioritäten BelowNormal und Low |
||||||||||||||||
BelowNormal |
Dies ist die vorletzte Prioritätsstufe; Cache-Elemente mit dieser Priorität werden nur vor Cache-Elementen mit niedriger Priorität | tr>||||||||||||||||
Niedrig | beibehalten Cache-Elemente, die auf diese Priorität eingestellt sind, werden am wahrscheinlichsten gelöscht, wenn der Speicher knapp wird. |
Standard |
Der Standard Der Wert der Cache-Elementpriorität ist „Normal“ |
||||||||||||||
NotRemovable |
Wenn ein Cache-Element auf diese Priorität festgelegt ist, teilen Sie dies ASP mit. NET, es nicht aus dem Cache zu löschen, auch wenn nicht genügend Speicher vorhanden ist |
Das obige ist der detaillierte Inhalt vonEine kurze Analyse der Seiten-Caching-Technologie von asp.net. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!