Dela via


Lokal cache i Azure App Service

Tips/Råd

Du kan också ställa följande frågor till Microsoft Copilot i Azure:

  • Hur fungerar en lokal cache i Azure App Service?
  • Vilka är fördelarna med att använda en lokal cache i Azure App Service?
  • Vilka är begränsningarna med att använda en lokal cache i Azure App Service?

Om du vill hitta Copilot i Azure går du till verktygsfältet i Azure-portalen och väljer Copilot.

Azure App Service-innehåll lagras i Azure Storage och exponeras som en beständig innehållsresurs. Den här designen fungerar med olika appar och har följande attribut:

  • Innehållet delas över flera virtuella datorinstanser (VM) i appen.
  • Innehållet är beständigt och appar som körs kan ändra det.
  • Loggfiler och diagnostikdatafiler är tillgängliga under samma delade innehållsmapp.
  • När du publicerar nytt innehåll uppdateras innehållsmappen direkt. Du kan omedelbart visa samma innehåll via webbplatsen för Source Control Manager (SCM, även kallat Kudu) och appen som körs. Vissa tekniker (till exempel ASP.NET) kan dock initiera en appomstart för vissa filändringar för att läsa in det senaste innehållet.

Även om många appar använder en eller flera av dessa funktioner behöver vissa appar en högpresterande skrivskyddad datalagring som de kan köras från med hög tillgänglighet. Sådana appar kan dra nytta av att köra mot en lokal cache på den virtuella datorinstansen.

Den lokala cachefunktionen i Azure App Service ger en webbrollsvy över ditt innehåll. Det här innehållet är en skriv-och-kassera-cache för ditt lagringsinnehåll som skapas asynkront när webbplatsen startar. När cachen är klar växlar webbplatsen till att köras mot det cachelagrade innehållet.

Appar som körs med en lokal cacheförmån på följande sätt:

  • De är immuna mot svarstider som är associerade med åtkomst till innehåll i Azure Storage.
  • Problem med att ansluta till lagringen påverkar dem inte eftersom den skrivskyddade kopian cachelagras lokalt.
  • De får färre omstarter av appar från ändringar i lagringsresursen.

Anmärkning

Funktionen för lokal cache stöds inte i funktionsappar eller containerbaserade App Service-appar, till exempel i Windows-containrar eller i inbyggda eller anpassade Linux-containrar. En version av funktionen som är tillgänglig för dessa apptyper är App Cache.

Den lokala cachefunktionen stöds inte heller i prisnivåerna F1 och D1 i App Service.

Hur en lokal cache ändrar beteendet för App Service

När du konfigurerar en lokal cache kan du göra följande ändringar:

  • D:\home pekar nu på den lokala cachen, som skapas på den virtuella datorinstansen när appen startar. D:\local fortsätter att peka på den tillfälliga, VM-specifika lagringen.

  • Den lokala cachen innehåller en engångskopia av mapparna /site och /siteextensions från det delade innehållsarkivet. De här mapparna finns på D:\home\site respektive D:\home\siteextensions. Dessa filer kopieras till den lokala cachen vid appstart.

    Storleken på dessa två mappar är begränsad till 1 GB som standard, men du kan öka den till 2 GB. När cachestorleken ökar tar det längre tid att läsa in cacheminnet. Om du ökar gränsen för lokal cache till 2 GB och de kopierade filerna överskrider den maximala storleken ignorerar App Service tyst den lokala cachen och läser från fjärrfilresursen.

    Viktigt!

    När de kopierade filerna överskrider den definierade storleksgränsen för den lokala cachen, eller när ingen gräns har definierats, kan distributions- och växlingsåtgärder misslyckas med ett fel. Mer information finns i Vanliga frågor och svar om storleksbegränsningar senare i den här artikeln.

  • Den lokala cachen är läs/skriv. Ändringar ignoreras dock när appen flyttas mellan virtuella datorer eller startas om. Använd inte den lokala cachen för att lagra verksamhetskritiska data.

  • D:\home\LogFiles och D:\home\Data innehåller loggfiler och appdata. Dessa mappar lagras lokalt på den virtuella datorinstansen och kopieras regelbundet till det delade innehållsarkivet. Även om appar kan bevara loggfiler och data genom att skriva till dessa mappar är kopieringsprocessen bäst. Loggfiler och data kan gå förlorade om en virtuell datorinstans plötsligt slutar svara.

  • Den bästa möjliga kopieringen påverkar loggströmningen. Du kan se upp till en minuts fördröjning i strömmade loggar.

  • I det delade innehållsarkivet ändras mappstrukturen för LogFiles och Data för appar som använder en lokal cache. Det finns nu undermappar med namn som består av en unik identifierare och en tidsstämpel. Varje undermapp motsvarar en VM-instans där appen körs eller kördes.

  • Andra mappar i D:\home finns kvar i den lokala cachen och kopieras inte till det delade innehållsarkivet.

  • Appdistribution via valfri stödd metod publiceras direkt till den hållbara delade innehållslagringen. Om du vill uppdatera mapparna D:\home\site och D:\home\siteextensions i den lokala cachen måste du starta om appen. En sömlös livscykel finns i avsnittet om metodtips senare i den här artikeln.

  • Standardinnehållsvyn för SCM-webbplatsen fortsätter att återspegla det delade innehållsarkivet.

Anmärkning

Om du använder Java (Java SE, Tomcat eller JBoss EAP) kopieras som standard Java-artefakterna (.jar, .war och .ear-filer) lokalt till arbetaren. Om Java-programmet är beroende av skrivskyddad åtkomst till ytterligare filer anger du JAVA_COPY_ALL till true så att även dessa filer kopieras. Om en lokal cache är aktiverad har den företräde framför det här Java-specifika beteendet.

Metoder för att aktivera en lokal cache

Du konfigurerar en lokal cache med hjälp av en kombination av reserverade appinställningar. Du kan ange dessa appinställningar med någon av följande metoder.

Konfigurera en lokal cache med hjälp av Azure-portalen

Aktivera en lokal cache per webbapp genom att lägga till den här appinställningen: WEBSITE_LOCAL_CACHE_OPTION = Always.

Konfigurera en lokal cache med hjälp av Azure Resource Manager

{
    "apiVersion": "2015-08-01",
    "type": "config",
    "name": "appsettings",
    "dependsOn": [
        "[resourceId('Microsoft.Web/sites/', variables('siteName'))]"
    ],

    "properties": {
        "WEBSITE_LOCAL_CACHE_OPTION": "Always",
        "WEBSITE_LOCAL_CACHE_SIZEINMB": "1000"
    }
}

Ändra storleksinställningen i en lokal cache

Som standard är den lokala cachestorleken 1 GB. Den här storleken innehåller mapparna /site och /siteextensions som kopierats från innehållsbutiken. Den innehåller även alla lokalt genererade loggar och datamappar.

Om du vill öka den här gränsen använder du appinställningen WEBSITE_LOCAL_CACHE_SIZEINMB. Du kan öka storleken till 2 GB (2 000 MB) per app. Tänk på att en större cachestorlek ökar tiden för att läsa in cacheminnet.

Metodtips för att använda en lokal cache

Vi rekommenderar att du använder en lokal cache tillsammans med funktionen mellanlagringsmiljöer .

Följande process representerar metodtipsen för att använda en lokal cache:

  1. Lägg till den beständiga appinställningen WEBSITE_LOCAL_CACHE_OPTION med värdet Always till din produktionsmiljö slot. Om du använder WEBSITE_LOCAL_CACHE_SIZEINMB, markera även den inställningen som en beständig inställning för produktionsslotten.

  2. Skapa ett mellanlagringsfack och publicera till det. Vanligtvis ställer du inte in mellanlagringsplatsen så att den använder en lokal cache, vilket hjälper till att möjliggöra en sömlös livscykel för att skapa/distribuera/testa samtidigt som den ger lokala cachefördelar för produktionsplatsen.

  3. Testa din webbplats i staging-miljön.

  4. När du är klar utför du ett byte mellan staging- och produktionsmiljöerna.

Sticky-inställningar är knutna till facket. När mellanlagringsplatsen växlas till produktion ärver den den lokala cachens appinställningar. Den nyss bytta produktionsplatsen kör mot den lokala cacheminnet efter några minuter och värms upp under plattformsuppvärmningen. När växlingen är klar körs produktionsplatsen mot den lokala cachen.

Vanliga frågor och svar

Vad händer om jag överskrider storleksgränsen för den lokala cachen?

Om de kopierade filerna överskrider storleksgränsen för den lokala cachen återgår appen till att läsa från fjärrresursen. I följande tabell visas information.

Lokal cachestorlek Kopierade filer Resultat
≤ 2 GB ≤ lokal cachestorlek Läser från den lokala cachen.
≤ 2 GB > lokal cachestorlek Läser från fjärrdelning.

Distributions- och växlingsåtgärder kan misslyckas med ett fel.

Hur vet jag om min app kan dra nytta av en lokal cache?

En lokal cache passar bra om alla dessa villkor gäller:

  • Din app kräver ett tillförlitligt innehållslager med höga prestanda.
  • Din applikation använder inte innehållsbutiken för att skriva kritiska data under körning.
  • Den totala storleken är mindre än 2 GB.

Om du vill kontrollera den totala storleken på dina /site mappar och /siteextensions mappar kan du använda webbplatstillägget Azure Web Apps Disk Usage.

Hur vet jag om min webbplats har bytt till en lokal cache?

När du använder en lokal cache med mellanlagringsmiljöer slutförs inte växlingsåtgärden förrän den lokala cachen har värmts upp. Kontrollera att webbplatsen körs mot den lokala cachen genom att kontrollera miljövariabeln WEBSITE_LOCALCACHE_READYför arbetsprocesser . Information om hur du inspekterar den här variabeln över flera instanser finns i Kudu-instruktionerna för miljövariabeln för arbetsprocesser.

Varför återspeglar inte min app nyligen publicerade ändringar?

Om din app använder en lokal cache måste du starta om webbplatsen för att läsa in de senaste ändringarna. Om du föredrar att inte publicera ändringar direkt till produktionsplatsen bör du överväga att använda distributionsplatser enligt beskrivningen i det tidigare avsnittet om metodtips.

Anmärkning

Alternativet köra från paket är inte kompatibelt med funktionen för lokal cache.

Var är mina loggar?

När du använder en lokal cache ändras strukturen för dina logg- och datamappar något. Undermapparna är nu kapslade under en mapp som namnges med den unika VM-identifieraren och en tidsstämpel. Var och en av dessa mappar motsvarar den virtuella datorinstansen där appen körs eller kördes.

Varför startar min app fortfarande om med en lokal cache aktiverad?

En lokal cache hjälper till att förhindra omstarter av lagringsrelaterade appar. Din app kan dock fortfarande startas om under planerade infrastrukturuppgraderingar på den virtuella datorn. Sammantaget bör du observera färre omstarter med en lokal cache aktiverad.

Utesluter en lokal cache att kataloger kopieras till den snabbare lokala enheten?

Under kopieringsprocessen undantas alla mappar med namnet repository . Det här beteendet är användbart i scenarier där webbplatsinnehållet innehåller en lagringsplats för källkontroll som du inte behöver för dagliga åtgärder.

Hur tömer jag loggarna för den lokala cachen efter en platshanteringsåtgärd?

Om du vill rensa de lokala cacheloggarna stoppar och startar du om appen. Den här åtgärden rensar den tidigare cachen.

Varför visar App Service tidigare distribuerade filer efter en omstart när en lokal cache är aktiverad?

Om tidigare distribuerade filer visas igen efter en omstart kontrollerar du förekomsten av appinställningen WEBSITE_DISABLE_SCM_SEPARATION=true. Om du lägger till den här inställningen kan distributioner via Kudu skriva till den lokala virtuella datorn i stället för beständig lagring. Undvik den här situationen genom att följa de metodtips som nämnts tidigare och utföra distributioner till ett mellanlagringsfack som inte har en lokal cache aktiverad.