Heim > Backend-Entwicklung > C#.Net-Tutorial > Eine kurze Analyse der Seiten-Caching-Technologie von asp.net

Eine kurze Analyse der Seiten-Caching-Technologie von asp.net

怪我咯
Freigeben: 2017-03-31 11:55:58
Original
1276 Leute haben es durchsucht

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

<. tbody>Gibt an, dass das Ausgabe-Caching für diese Seite deaktiviert ist
Standort
Location
含义
Any
默认值。意味着页面的输出可以缓存在客户端浏览器,缓存在任何“下游”的客户端(如代理服务器),或缓存在Web服务器本身
Client
指明输出缓存只能存储在发出请求的客户端(即浏览器)的本地缓存中
Downstream
指明输出缓存能存储在任何支持HTTP1.1缓存的设备(如代理服务器)中
Server
指明输出缓存将存储在Web服务器上
None
指明该页面禁用输出缓存
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


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.

tr> beibehalten
Prioritätswert
优先级值
含义
High
设为此优先级的缓存项是最不可能在内存不足时被删除的
AboveNormal
设为此优先级的缓存项比优先级为Normal或以下的缓存项更优先保留
Normal
设为此优先级的缓存项比优先级为BelowNormal和Low的缓存项更优先保留
BelowNormal
这是倒数第二级的优先级;设为此优先级的缓存项只比优先级设为Low的缓存项更优先保留
Low
设为此优先级的缓存项是最有可能在内存不足时被删除的
Default
缓存项的优先级的默认值是Normal
NotRemovable
当缓存项设为此优先级时,是在告诉ASP.NET即使是内存不足,也不要从缓存中删除它
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
Niedrig
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

DateTime dt = new DateTime(DateTime.Now.Year,12, 31);
Cache.Add("MembersDataSet",dsMembers,null,
dt,TimeSpan.Zero,
CacheItemPriority. Normal,null);
Der erste Parameter ist der Schlüssel, der auf den Cache verweist Objekt, und der zweite Parameter ist das zwischenzuspeichernde Objekt. Der dritte Parameter ist null (was auf keine Korrelation hinweist).
Der vierte und fünfte Parameter sind die absolute Ablaufzeit und die flexible Ablaufzeit. Hier legen wir fest, dass der Cache am letzten Tag des aktuellen Jahres (dt) ablaufen soll. Wir möchten eine nicht flexible Ablaufzeit angeben, also verwenden Sie TimeSpan.Zero für den fünften Parameter. Der sechste Parameter verwendet einen Wert aus der System.Web.Caching.CacheItemPriority-Enumeration, um die Priorität auf „Normal“ festzulegen.

Geben Sie eine flexible Ablaufzeit von 5 Minuten an, es wird keine absolute Ablaufzeit angegeben
Cache.Add("MembersDataSet",dsMembers,null,
DateTime.MaxValue,TimeSpan.FromMinutes(5),
CacheItemPriority.Normal,null);

Eine Korrelation hinzufügen. In diesem Beispiel hängt die Ablaufzeit auch von der Änderung einer Datei ab, der Datei test.xml:
CacheDependency dep = new CacheDependency(@"C:/test.xml");
Cache.Add(" MembersDataSet ",dsMembers,dep,
DateTime.MaxValue,TimeSpan.FromMinutes(5),
CacheItemPriority.Normal,null);

Die Ablaufzeit hängt von der Änderung eines anderen Elements im Cache ab :
String[] dependencyKeys = new String[1];
dependencyKeys[0] = "MembersChanged";
CacheDependency dependency = new CacheDependency(null, dependencyKeys);Cache.Add("MembersDataSet ",dsMembers ,dependency,
DateTime.MaxValue,TimeSpan.Zero,
CacheItemPriority.Normal,null);

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage