Delen via


De lokale cache in Azure App Service

Hint

U kunt ook deze vragen aan Microsoft Copilot in Azure stellen.

  • Hoe werkt een lokale cache in Azure App Service?
  • Wat zijn de voordelen van het gebruik van een lokale cache in Azure App Service?
  • Wat zijn de beperkingen van het gebruik van een lokale cache in Azure App Service?

Als u Copilot in Azure wilt zoeken, selecteert u Copilot op de werkbalk van Azure Portal.

Azure App Service-inhoud wordt opgeslagen in Azure Storage en wordt weergegeven als een duurzame inhoudsshare. Dit ontwerp werkt met verschillende apps en heeft de volgende kenmerken:

  • De inhoud wordt gedeeld over meerdere vm-exemplaren van de app.
  • De inhoud is duurzaam en actieve apps kunnen deze wijzigen.
  • 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 (Source Control Manager, ook wel Kudu genoemd) en de actieve app. Sommige technologieën (zoals ASP.NET) kunnen echter een app opnieuw opstarten bij bepaalde bestandswijzigingen om de meest recente inhoud te laden.

Hoewel veel apps een of meer van deze functies gebruiken, hebben sommige apps een hoogwaardige, alleen-lezen inhoudsopslag nodig waarmee ze met een hoge beschikbaarheid kunnen draaien. Dergelijke apps kunnen profiteren van uitvoering op basis van een lokale cache op het VM-exemplaar.

De functie lokale cache in Azure App Service biedt een webrolweergave van uw inhoud. Deze inhoud is een wegwerpschrijf-cache van uw opslaginhoud die asynchroon aangemaakt wordt bij het opstarten van de site. Wanneer de cache gereed is, schakelt de site over naar het gebruik van de gecachete inhoud.

Apps die draaien met een lokale cache profiteren op de volgende manieren:

  • Ze zijn immuun voor latenties die zijn gekoppeld aan het openen van inhoud in Azure Storage.
  • Problemen met het maken van verbinding met de opslag hebben geen invloed op hen, omdat de alleen-lezen kopie lokaal in de cache is geplaatst.
  • Ze ervaren minder opnieuw opstarten van apps vanaf wijzigingen in de opslagshare.

Notitie

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

De functie voor lokale cache wordt ook niet ondersteund in de prijscategorieën F1 en D1 van App Service.

Hoe een lokale cache het gedrag van App Service wijzigt

Als u een lokale cache configureert, worden deze wijzigingen veroorzaakt:

  • D:\home verwijst nu 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 /site en /siteextensions mappen uit het gedeelde inhoudsarchief. Deze mappen bevinden zich respectievelijk op D:\home\site en D:\home\siteextensions, respectievelijk. Deze bestanden worden gekopieerd naar de lokale cache bij het opstarten van de app.

    De grootte van deze twee mappen is standaard beperkt tot 1 GB, maar u kunt deze uitbreiden tot 2 GB. Naarmate de cache groter wordt, duurt het langer om de cache te laden. Als u de lokale cachelimiet verhoogt tot 2 GB en de gekopieerde bestanden deze maximale grootte overschrijden, negeert App Service op de achtergrond de lokale cache en leest deze van de externe bestandsshare.

    Belangrijk

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

  • De lokale cache kan lezen en schrijven. Wijzigingen worden echter genegeerd wanneer de app wordt verplaatst tussen VM's of opnieuw wordt opgestart. Gebruik de lokale cache niet voor het opslaan van bedrijfskritieke gegevens.

  • D:\home\LogFiles en D:\home\Data logboekbestanden en app-gegevens bevatten. Deze mappen worden lokaal opgeslagen op het VM-exemplaar en worden periodiek gekopieerd naar het gedeelde inhoudsarchief. Hoewel apps logboekbestanden en -gegevens kunnen behouden door naar deze mappen te schrijven, is het kopieerproces het beste. Logboekbestanden en -gegevens kunnen verloren gaan als een VM-exemplaar plotseling niet meer reageert.

  • De best effort-kopie is van invloed op logstreaming. Mogelijk ziet u een vertraging van één minuut in gestreamde logboeken.

  • In het gedeelde inhoudsarchief bevat de mapstructuur voor LogFiles en Data wijzigingen voor apps die gebruikmaken van een lokale cache. Er zijn nu submappen met namen die bestaan uit een unieke id en een tijdstempel. Elke submap komt overeen met een VM-exemplaar waarop de app is of werd uitgevoerd.

  • Andere mappen blijven in D:\home de lokale cache en worden niet gekopieerd naar het gedeelde inhoudsarchief.

  • App-implementaties via elke ondersteunde methode publiceren rechtstreeks naar het duurzame gedeelde inhoudsarchief. Als u de D:\home\site en D:\home\siteextensions mappen in de lokale cache wilt vernieuwen, moet u de app opnieuw starten. Zie de sectie over aanbevolen procedures verderop in dit artikel voor een naadloze levenscyclus.

  • De standaardinhoudsweergave van de SCM-site blijft het gedeelde inhoudsarchief weerspiegelen.

Notitie

Als u Java (Java SE, Tomcat of JBoss EAP) gebruikt, worden de Java-artefacten (.jar, .war en .ear-bestanden) standaard lokaal naar het werkstation gekopieerd. Als uw Java-toepassing afhankelijk is van alleen-lezentoegang tot aanvullende bestanden, stelt u deze in JAVA_COPY_ALLtrue op zodat deze bestanden ook worden gekopieerd. Als een lokale cache is ingeschakeld, heeft deze voorrang op dit Java-specifieke gedrag.

Methoden voor het inschakelen van een lokale cache

U configureert een lokale cache met behulp van een combinatie van gereserveerde app-instellingen. U kunt deze app-instellingen instellen met behulp van een van de volgende methoden.

Een lokale cache configureren met behulp van Azure Portal

Schakel een lokale cache per web-app in door deze app-instelling toe te voegen: WEBSITE_LOCAL_CACHE_OPTION = Always

Een 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 in een lokale cache wijzigen

De grootte van de lokale cache is standaard 1 GB. Deze grootte omvat de /site en /siteextensions mappen die zijn gekopieerd uit het inhoudsarchief. Het bevat ook lokaal gegenereerde 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 een grotere cache de tijd verhoogt om de cache te laden.

Aanbevolen procedures voor het gebruik van een lokale cache

U wordt aangeraden een lokale cache te gebruiken in combinatie met de functie faseringsomgevingen .

Het volgende proces vertegenwoordigt de aanbevolen procedures voor het gebruik van een lokale cache:

  1. Voeg de sticky app-instelling WEBSITE_LOCAL_CACHE_OPTION toe met de waarde Always aan uw production slot. Als u de WEBSITE_LOCAL_CACHE_SIZEINMB-instelling gebruikt, moet u deze instelling ook markeren als een blijvende instelling voor de productieomgeving.

  2. Maak een staging-slot en publiceer erop. Normaal gesproken stelt u de staging-site niet in op het gebruik van een lokale cache, waardoor een naadloze levenscyclus voor bouwen/implementeren/testen mogelijk wordt, terwijl u nog steeds lokale cachevoordelen voor de productiesite biedt.

  3. Test uw site in de stagingomgeving.

  4. Wanneer u klaar bent, voert u een swap-operatie uit tussen de staging- en productiesloten.

Plakinstellingen zijn gekoppeld aan de sleuf. Wanneer de staging-sleuf naar productie wordt omgewisseld, erft deze de app-instellingen van de lokale cache. De zojuist gewisselde productiesleuf wordt na een paar minuten uitgevoerd tegen de lokale cache en wordt opgewarmd tijdens de sleufopwarming. Nadat de wissel is voltooid, wordt uw productieslot uitgevoerd op de lokale cache.

Veelgestelde vragen

Wat gebeurt er als ik de groottelimiet voor de lokale cache overschrijd?

Als de gekopieerde bestanden de limiet voor de lokale cache overschrijden, wordt de app teruggezet naar het lezen van de externe share. In de volgende tabel ziet u de details.

Grootte van lokale cache Gekopieerde bestanden Resultaat
≤ 2 GB ≤ lokale cachegrootte Leest uit de lokale cache.
≤ 2 GB > grootte van lokale cache Leest van de externe netwerkshare.

Implementatie- en uitwisselingsbewerkingen kunnen mislukken door een fout.

Hoe weet ik of mijn app kan profiteren van een lokale cache?

Een lokale cache is geschikt als al deze voorwaarden van toepassing zijn:

  • Uw app vereist een krachtige, betrouwbare inhoudsopslag.
  • Uw app gebruikt het inhoudsarchief niet voor het schrijven van kritieke gegevens tijdens runtime.
  • De totale grootte is kleiner dan 2 GB.

Als u de totale grootte van uw /site en /siteextensions mappen wilt controleren, kunt u de site-extensie Azure Web Apps Disk Usage gebruiken.

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

Wanneer u een 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 basis van de lokale cache, controleert u de omgevingsvariabele WEBSITE_LOCALCACHE_READYvan het werkproces. Raadpleeg de Kudu-instructies voor de omgevingsvariabele voor het werkproces om deze variabele over meerdere exemplaren te inspecteren.

Waarom geeft mijn app geen nieuw gepubliceerde wijzigingen weer?

Als uw app gebruikmaakt van een lokale cache, moet u de site opnieuw opstarten om de meest recente wijzigingen te laden. Als u liever geen wijzigingen rechtstreeks naar uw productiesite publiceert, kunt u overwegen implementatiesites te gebruiken, zoals beschreven in de eerdere sectie over aanbevolen procedures.

Notitie

De uitvoeren vanaf pakket implementatieoptie is niet compatibel met de lokale cachefunctie.

Waar zijn mijn logboeken?

Wanneer u een lokale cache gebruikt, worden de structuur van uw logboek- en gegevensmappen enigszins gewijzigd. De submappen zijn nu genest onder een map met de unieke VM-id en een tijdstempel. Elk van deze mappen komt overeen met het VM-exemplaar waarop de app is of werd uitgevoerd.

Waarom wordt mijn app nog steeds opnieuw opgestart met een lokale cache ingeschakeld?

Een lokale cache helpt voorkomen dat de opslaggerelateerde app opnieuw wordt opgestart. Uw app kan echter nog steeds opnieuw worden opgestart tijdens geplande infrastructuurupgrades op de VIRTUELE machine. Over het algemeen moet u minder herstarts observeren met een lokale cache ingeschakeld.

Sluit een lokale cache bepaalde mappen uit van kopiëren naar het snellere lokale station?

Tijdens het kopieerproces wordt elke map met de naam repository uitgesloten. Dit gedrag is handig in scenario's waarin uw site-inhoud een opslagplaats voor broncodebeheer bevat die u niet nodig hebt voor dagelijkse bewerkingen.

Hoe maak ik de lokale cachelogboeken leeg na een sitebeheerbewerking?

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

Waarom worden eerder geïmplementeerde bestanden weergegeven na opnieuw opstarten wanneer een lokale cache is ingeschakeld?

Als eerder geïmplementeerde bestanden opnieuw worden weergegeven na het opnieuw opstarten, controleert u of de app-instelling WEBSITE_DISABLE_SCM_SEPARATION=trueaanwezig is. Als u deze instelling toevoegt, worden implementaties via Kudu naar de lokale VM geschreven in plaats van permanente opslag. Om deze situatie te voorkomen, volgt u de aanbevolen procedures die eerder zijn genoemd en voert u implementaties uit naar een staging-site waarvoor geen lokale cache is ingeschakeld.