Overzicht van Azure-app lokale cache van Azure-app-service

Notitie

Lokale cache wordt niet ondersteund in functie-apps of in containers geplaatste App Service-apps, zoals in Windows-containers of in App Service op Linux. Een versie van de lokale cache die beschikbaar is voor deze app-typen is App Cache.

Azure-app Service-inhoud wordt opgeslagen in Azure Storage en wordt op een duurzame manier weergegeven als een inhoudsshare. Dit ontwerp is bedoeld om te werken met verschillende apps en heeft de volgende kenmerken:

  • De inhoud wordt gedeeld over meerdere vm-exemplaren van de app.
  • De inhoud is duurzaam en kan worden gewijzigd door apps uit te voeren.
  • Logboekbestanden en diagnostische gegevensbestanden zijn beschikbaar onder dezelfde gedeelde inhoudsmap.
  • Als u nieuwe inhoud publiceert, wordt de inhoudsmap rechtstreeks bijgewerkt. U kunt dezelfde inhoud direct bekijken via de SCM-website en de actieve app (meestal starten sommige technologieën zoals ASP.NET starten een app opnieuw op bij sommige bestandswijzigingen om de meest recente inhoud op te halen).

Hoewel veel apps een of al deze functies gebruiken, hebben sommige apps alleen een hoogwaardige, alleen-lezen inhoudsopslag nodig die ze met hoge beschikbaarheid kunnen uitvoeren. Deze apps kunnen profiteren van een VM-exemplaar van een specifieke lokale cache.

De functie Azure-app Lokale cacheservice biedt een webrolweergave van uw inhoud. Deze inhoud is een cache voor schrijven maar negeren van uw opslaginhoud die asynchroon wordt gemaakt bij het opstarten van de site. Wanneer de cache gereed is, wordt de site overgeschakeld op de inhoud in de cache. Apps die worden uitgevoerd op lokale cache, hebben de volgende voordelen:

  • Ze zijn immuun voor latenties die optreden wanneer ze toegang hebben tot inhoud in Azure Storage.
  • Ze worden niet beïnvloed door verbindingsproblemen met de opslag, omdat de alleen-lezen kopie is opgeslagen in de cache van de werkrol.
  • Ze hebben minder app-herstart vanwege wijzigingen in de opslagshare.

Notitie

Als u Java (Java SE, Tomcat of JBoss EAP) gebruikt, worden standaard de Java-artefacten--.jar, .war en .ear-bestanden lokaal naar de werkrol gekopieerd. Als uw Java-toepassing ook afhankelijk is van alleen-lezentoegang tot andere bestanden, moet u deze JAVA_COPY_ALLtrue bestanden ook kopiëren. Als Lokale cache is ingeschakeld, heeft deze voorrang op deze Java-specifieke uitbreiding.

Hoe de lokale cache het gedrag van App Service wijzigt

  • D:\home verwijst naar de lokale cache, die wordt gemaakt op het VM-exemplaar wanneer de app wordt gestart. D:\local blijft verwijzen naar de tijdelijke VM-specifieke opslag.
  • De lokale cache bevat een eenmalige kopie van de mappen /site en /siteextensions van het gedeelde inhoudsarchief, respectievelijk op D:\home\site en D:\home\siteextensions. De bestanden worden gekopieerd naar de lokale cache wanneer de app wordt gestart. De grootte van de twee mappen voor elke app is standaard beperkt tot 1 GB, maar kan worden verhoogd tot 2 GB. Houd er rekening mee dat wanneer de cachegrootte toeneemt, het langer duurt om de cache te laden. Als u de lokale cachelimiet hebt verhoogd tot 2 GB en de gekopieerde bestanden groter zijn dan de maximale grootte van 2 GB, negeert App Service op de achtergrond lokale cache en leest deze vanaf de externe bestandsshare.

Belangrijk

Wanneer de gekopieerde bestanden de gedefinieerde groottelimiet voor lokale cache overschrijden of wanneer er geen limiet is gedefinieerd, kunnen implementatie- en wisselbewerkingen mislukken met een fout. Zie de veelgestelde vragen voor meer informatie.

  • De lokale cache is lezen/schrijven. Wijzigingen worden echter genegeerd wanneer de app virtuele machines verplaatst of opnieuw wordt opgestart. Gebruik de lokale cache niet voor apps die bedrijfskritieke gegevens opslaan in het inhoudsarchief.
  • D:\home\LogFiles en D:\home\Data bevatten logboekbestanden en app-gegevens. De twee submappen worden lokaal opgeslagen op het VM-exemplaar en worden periodiek gekopieerd naar het gedeelde inhoudsarchief. Apps kunnen logboekbestanden en -gegevens persistent maken door ze naar deze mappen te schrijven. Het kopiëren naar het gedeelde inhoudsarchief is echter het beste, dus het is mogelijk dat logboekbestanden en gegevens verloren gaan vanwege een plotselinge crash van een VM-exemplaar.
  • Logboekstreaming wordt beïnvloed door de best effort-kopie. U kunt maximaal één minuut vertraging in de gestreamde logboeken observeren.
  • In het gedeelde inhoudsarchief is er een wijziging in de mapstructuur van de mappen LogFiles en Gegevens voor apps die gebruikmaken van de lokale cache. Er zijn nu submappen die het naamgevingspatroon van 'unieke id' + tijdstempel volgen. Elk van de submappen komt overeen met een VM-exemplaar waarop de app wordt uitgevoerd of uitgevoerd.
  • Andere mappen in D:\home blijven in de lokale cache en worden niet gekopieerd naar het gedeelde inhoudsarchief.
  • App-implementatie via elke ondersteunde methode publiceert rechtstreeks naar het duurzame gedeelde inhoudsarchief. Als u de mappen D:\home\site en D:\home\siteextensions in de lokale cache wilt vernieuwen, moet de app opnieuw worden gestart. Zie de informatie verderop in dit artikel om de levenscyclus naadloos te laten verlopen.
  • De standaardinhoudsweergave van de SCM-site blijft die van het gedeelde inhoudsarchief.

Lokale cache inschakelen in App Service

Notitie

Lokale cache wordt niet ondersteund in de F1 - of D1-laag .

U configureert Lokale cache met behulp van een combinatie van gereserveerde app-instellingen. U kunt deze app-instellingen configureren met behulp van de volgende methoden:

Lokale cache configureren met behulp van Azure Portal

U schakelt lokale cache per web-app in met behulp van deze app-instelling: WEBSITE_LOCAL_CACHE_OPTION = Always

Azure portal app settings: Local Cache

Lokale cache configureren met behulp van 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"
    }
}

...

De grootte-instelling wijzigen in lokale cache

De grootte van de lokale cache is standaard 1 GB. Dit omvat de mappen /site en/siteextensions die worden gekopieerd uit het inhoudsarchief, evenals lokaal gemaakte logboeken en gegevensmappen. Als u deze limiet wilt verhogen, gebruikt u de app-instelling WEBSITE_LOCAL_CACHE_SIZEINMB. U kunt de grootte verhogen tot 2 GB (2000 MB) per app. Houd er rekening mee dat het langer duurt om de lokale cache te laden naarmate de grootte toeneemt.

Aanbevolen procedures voor het gebruik van lokale Cache van App Service

We raden u aan lokale cache te gebruiken in combinatie met de functie Faseringsomgevingen .

  • Voeg de plak-app-instelling WEBSITE_LOCAL_CACHE_OPTION toe met de waarde Always aan uw Productiesite. Als u deze WEBSITE_LOCAL_CACHE_SIZEINMBgebruikt, voegt u deze ook toe als een plakinstelling voor uw productiesite.
  • Maak een Staging-site en publiceer deze naar uw Staging-site. Doorgaans stelt u de staging-site niet in op het gebruik van lokale cache om een naadloze build-deploy-testlevenscyclus voor fasering mogelijk te maken als u de voordelen van Lokale cache voor de productiesite krijgt.
  • Test uw site op uw Staging-site.
  • Wanneer u klaar bent, voert u een wisselbewerking uit tussen uw faserings- en productiesites.
  • Plakinstellingen bevatten naam en plakkerigheid in een sleuf. Dus wanneer de Staging-site wordt omgewisseld in Productie, neemt deze de instellingen van de lokale cache-app over. De zojuist gewisselde productiesite wordt na enkele minuten uitgevoerd op de lokale cache en wordt na het wisselen opgewarmd als onderdeel van slotwarmup. Dus wanneer de sitewisseling is voltooid, wordt uw productiesite uitgevoerd op de lokale cache.

Veelgestelde vragen

Wat gebeurt er als de limiet voor de grootte van de lokale cache wordt overschreden?

Wanneer de gekopieerde bestanden de limiet voor lokale cache overschrijden, wordt de app gelezen vanuit de externe share. Implementatie- en wisselbewerkingen kunnen echter mislukken met een fout. Zie de onderstaande tabel voor groottelimieten en resultaten.

 Grootte van lokale cache Bestanden ge coped Resultaat
≤ 2 GB ≤ lokale cachegrootte Leest uit de lokale cache.
≤ 2 GB > Grootte van lokale cache Leest van externe share.
Opmerking: implementatie- en wisselbewerkingen kunnen mislukken met een fout.

Hoe weet ik of lokale cache van toepassing is op mijn app?

Als uw app een krachtige, betrouwbare inhoudsopslag nodig heeft, wordt het inhoudsarchief niet gebruikt om kritieke gegevens tijdens runtime te schrijven en kleiner is dan 2 GB in totale grootte. Het antwoord is 'ja'. Als u de totale grootte van uw mappen /site en /siteextensions wilt ophalen, kunt u de site-extensie 'Azure Web Apps Disk Usage' gebruiken.

Hoe weet ik of mijn site is overgeschakeld naar lokale cache?

Als u de functie Lokale cache met faseringsomgevingen gebruikt, wordt de wisselbewerking pas voltooid nadat de lokale cache is opgewarmd. Als u wilt controleren of uw site wordt uitgevoerd op lokale cache, kunt u de omgevingsvariabele WEBSITE_LOCALCACHE_READYvoor het werkproces controleren. Gebruik de instructies op de pagina omgevingsvariabele voor het werkproces voor toegang tot de omgevingsvariabele voor het werkproces op meerdere exemplaren.

Ik heb zojuist nieuwe wijzigingen gepubliceerd, maar mijn app lijkt ze niet te hebben. Waarom?

Als uw app gebruikmaakt van lokale cache, moet u de site opnieuw opstarten om de meest recente wijzigingen op te halen. Wilt u geen wijzigingen naar een productiesite publiceren? Zie de siteopties in de vorige sectie met aanbevolen procedures.

Notitie

De uitvoering van de optie voor pakketimplementatie is niet compatibel met lokale cache.

Waar zijn mijn logboeken?

Met Lokale cache zien uw logboeken en gegevensmappen er iets anders uit. De structuur van uw submappen blijft echter hetzelfde, behalve dat de submappen zich onder een submap bevinden met de indeling 'unieke VM-id' + tijdstempel.

Ik heb Lokale cache ingeschakeld, maar mijn app wordt nog steeds opnieuw opgestart. Waarom is dat? Ik dacht dat Lokale cache heeft geholpen bij het regelmatig opnieuw opstarten van apps.

Lokale cache helpt bij het voorkomen dat de opslaggerelateerde app opnieuw wordt opgestart. Uw app kan echter nog steeds opnieuw worden opgestart tijdens geplande infrastructuurupgrades van de VIRTUELE machine. De algehele app wordt opnieuw opgestart met lokale cache ingeschakeld, moet minder zijn.

Sluit Lokale cache alle mappen uit die naar het snellere lokale station worden gekopieerd?

Als onderdeel van de stap waarmee de opslaginhoud wordt gekopieerd, wordt elke map met de naam opslagplaats uitgesloten. Dit helpt bij scenario's waarin uw site-inhoud mogelijk een opslagplaats voor broncodebeheer bevat die mogelijk niet nodig is in de dagelijkse werking van de app.

Hoe kunt u de lokale cachelogboeken leegmaken na een sitebeheerbewerking?

Als u de lokale cachelogboeken wilt leegmaken, stopt u de app en start u deze opnieuw. Met deze actie wordt de oude cache gewist.

Waarom start App Service met het weergeven van eerder geïmplementeerde bestanden na opnieuw opstarten wanneer Lokale cache is ingeschakeld?

Als App Service begint met het weergeven van eerder geïmplementeerde bestanden bij opnieuw opstarten, controleert u of de app-instelling aanwezig is: 'WEBSITE_DISABLE_SCM_SEPARATION=true'. Nadat u deze instelling hebt toegevoegd, beginnen alle implementaties via KUDU te schrijven naar de lokale VM in plaats van de permanente opslag. Aanbevolen procedures die hierboven in dit artikel worden genoemd, moeten worden gebruikt, waarbij de implementaties altijd moeten worden uitgevoerd voor de staging-site waarvoor lokale cache niet is ingeschakeld.

Meer resources

Naslaginformatie over omgevingsvariabelen en app-instellingen