Sdílet prostřednictvím


Ukládání dat do mezipaměti na webu ASP.NET Web Pages (Razor) pro zajištění lepšího výkonu

, autor: Tom FitzMacken

Tento článek vysvětluje, jak použít pomocnou rutinu k ukládání informací do mezipaměti pro zajištění rychlejšího výkonu na webu ASP.NET Web Pages (Razor). Svůj web můžete urychlit tak, že do něj uložíte – tedy do mezipaměti – výsledky dat, která by obvykle trvalo poměrně dlouho načíst nebo zpracovat a která se často nemění.

Co se naučíte:

  • Jak používat ukládání do mezipaměti ke zlepšení odezvy vašeho webu.

Toto jsou ASP.NET funkce představené v tomto článku:

  • Pomocná rutina WebCache .

Verze softwaru použité v kurzu

  • ASP.NET Webové stránky (Razor) 3

Tento kurz funguje také s webovými stránkami ASP.NET 2.

Pokaždé, když někdo požádá o stránku z vašeho webu, musí webový server udělat nějakou práci, aby požadavek splnil. U některých vašich stránek může být nutné, aby server prováděl úlohy, které zabírají (poměrně) dlouhou dobu, například načítání dat z databáze. I v případě, že tyto úlohy netrží příliš dlouho, pokud je na vašem webu velký provoz, celá řada individuálních požadavků, které způsobují, že webový server provádí složitý nebo pomalý úkol, může komplikovat nebo pomalou úlohu komplikovat. To může v konečném důsledku ovlivnit výkon webu.

Jedním ze způsobů, jak zlepšit výkon webu za podobných okolností, je ukládání dat do mezipaměti. Pokud váš web dostává opakované žádosti o stejné informace a informace není nutné upravovat pro každou osobu a nejsou časově citlivé, můžete místo toho, abyste je znovu načítali nebo přepočítali, můžete data načíst jednou a pak uložit výsledky. Až příště přijde žádost o tuto informaci, jednoduše ji dostanete z mezipaměti.

Obecně platí, že ukládáte do mezipaměti informace, které se často nemění. Když do mezipaměti vložíte informace, uloží se do paměti na webovém serveru. Můžete určit, jak dlouho se má ukládat do mezipaměti, od sekund po dny. Po uplynutí doby ukládání do mezipaměti se informace z mezipaměti automaticky odeberou.

Poznámka

Položky v mezipaměti se můžou odebrat z jiných důvodů, než že vypršela jejich platnost. Webový server může mít například dočasně nedostatek paměti a jedním ze způsobů, jak může paměť uvolnit, je vygenerování položek z mezipaměti. Jak uvidíte, i když jste informace vložili do mezipaměti, musíte zkontrolovat, jestli jsou stále tam, když je potřebujete.

Představte si, že váš web má stránku, která zobrazuje aktuální teplotu a předpověď počasí. Pokud chcete získat tento typ informací, můžete odeslat žádost externí službě. Vzhledem k tomu, že se tyto informace moc nemění (například v rámci dvouhodinového časového období) a protože externí volání vyžadují čas a šířku pásma, je to vhodný kandidát pro ukládání do mezipaměti.

Přidání ukládání do mezipaměti na stránku

ASP.NET obsahuje pomocnou rutinu WebCache , která usnadňuje přidávání do mezipaměti na web a přidávání dat do mezipaměti. V tomto postupu vytvoříte stránku, která ukládá aktuální čas do mezipaměti. Nejedná se o skutečný příklad, protože aktuální čas se často mění a navíc není složitý na výpočet. Je to ale dobrý způsob, jak znázornit ukládání do mezipaměti v akci.

  1. Přidejte na web novou stránku WebCache.cshtml .

  2. Přidejte na stránku následující kód a kód:

    @{
        var cacheItemKey = "CachedTime";
        var cacheHit = true;
        var time = WebCache.Get(cacheItemKey);
    
        if (time == null) {
            cacheHit = false;
        }
    
        if (cacheHit == false) {
            time = @DateTime.Now;
            WebCache.Set(cacheItemKey, time, 1, false);
        }
    }
    <!DOCTYPE html>
    <html>
    <head>
        <title>WebCache Helper Sample</title>
    </head>
    <body>
        <div>
            @if (cacheHit) {
                @:Found the time data in the cache.
            } else {
                @:Did not find the time data in the cache.
            }
        </div>
        <div>
            This page was cached at @time.
        </div>
    </body>
    </html>
    

    Když data uložíte do mezipaměti, vložíte je do mezipaměti pomocí názvu, který je v rámci webu jedinečný. V tomto případě použijete položku mezipaměti s názvem CachedTime. Toto je znázorněno cacheItemKey v příkladu kódu.

    Kód nejprve přečte CachedTime položku mezipaměti. Pokud se vrátí hodnota (to znamená, že položka mezipaměti nemá hodnotu null), kód jenom nastaví hodnotu časové proměnné na data mezipaměti.

    Pokud však položka mezipaměti neexistuje (to znamená, že má hodnotu null), kód nastaví časovou hodnotu, přidá ji do mezipaměti a nastaví hodnotu vypršení platnosti na jednu minutu. Po jedné minutě se položka mezipaměti zahodí. (Výchozí hodnota vypršení platnosti položky v mezipaměti je 20 minut.) Příkaz WebCache.Set(cacheItemKey, time, 1, false) ukazuje, jak přidat hodnotu aktuálního času do mezipaměti a nastavit její vypršení na 1 minutu. Nastavení parametru slidingExpiration na znamená false , že se doba vypršení platnosti neprodloužila pokaždé, když je požadována. Platnost vyprší přesně 1 minutu od jeho původního přidání do mezipaměti. Pokud nastavíte tuto hodnotu na true 1 minutu vypršení platnosti, resetuje se při každém vyžádání hodnoty z mezipaměti.

    Tento kód znázorňuje vzor, který byste měli vždy používat při ukládání dat do mezipaměti. Než z mezipaměti něco získáte, vždy nejprve zkontrolujte, jestli WebCache.Get metoda vrátila hodnotu null. Mějte na paměti, že platnost položky mezipaměti možná vypršela nebo byla odebrána z nějakého jiného důvodu, takže není nikdy zaručeno, že se položka v mezipaměti nachází.

  3. Spusťte webCache.cshtml v prohlížeči. (Před spuštěním se ujistěte, že je stránka vybraná v pracovním prostoru Soubory .) Když poprvé požádáte o stránku, časová data nejsou v mezipaměti a kód musí do mezipaměti přidat časovou hodnotu.

    mezipaměť-1

  4. Aktualizujte soubor WebCache.cshtml v prohlížeči. Tentokrát jsou časová data v mezipaměti. Všimněte si, že čas se od posledního zobrazení stránky nezměnil.

    mezipaměť-2

  5. Počkejte minutu, než se mezipaměť vyprázdní, a pak aktualizujte stránku. Stránka znovu indikuje, že časová data nebyla nalezena v mezipaměti a aktualizovaný čas se přidá do mezipaměti.

Další materiály