tirsdag den 26. august 2014

Cache filer i ASP.NET MVC (HttpModul)


Hvis du udvikler en hjemmeside, vil du også gerne have den rangerer højt. Her er performance og load tid meget vigtig, og her kan caching hjælpe dig.
Den systemudvikler der laver din side ved det sandsynligvis godt, men der er flere måder at gøre det på.

Den ene er at tilføje en ActionFilterAttribut som cacher dit indhold, men denne gælder kun på dine actions (som siger lidt sig selv), men ofte vil du også cache billeder, javascript og andet fordi du genbruger dem i top og bund af siden på flere sider hvor der er samme layout indhold som kan caches.

Det er her at man som systemudvikler vender sig imod HttpModule, som kan reagere på alle requests og tilføje caching her (og dermed fange dine statiske resourcer).

Se koden herunder:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace HttpModules
{
    public class CachingModuleFiles : IHttpModule
    {
        public void Dispose() { }

        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders += this.SetDefaultCacheHeader;
        }

        private void SetDefaultCacheHeader(object sender, EventArgs eventArgs)
        {
            HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.Public);
            HttpContext.Current.Response.Cache.SetMaxAge(TimeSpan.FromSeconds(3600));
            HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddSeconds(3600));
        }
    }
}

OG HUSK AT AKTIVERE DEN I WEB.CONFIG DA DET ELLERS IKKE VIRKER!
Se her hvordan du gør:

<KODE>

Du kan her se hvordan du kan se at dine data er cachede:
<BILLEDE>

Ingen kommentarer:

Send en kommentar

Kan du lide mit indlæg, har en kommentar, forslag eller andet på hjerte så skriv venligst