Panoramica della cache locale del servizio app di Azure

Nota

La cache locale non è supportata nelle app per le funzioni o in contenitori servizio app app, ad esempio in contenitori di Windows o in servizio app in Linux. Una versione della cache locale disponibile per questi tipi di app è Cache delle app.

app Azure il contenuto del servizio viene archiviato in Archiviazione di Azure e viene indicato in modo durevole come condivisione di contenuto. Questo modello funziona con un'ampia varietà di app e prevede gli attributi seguenti:

  • Il contenuto è condiviso tra più istanze di macchina virtuale (VM) dell'app.
  • Il contenuto è permanente e può essere modificato dalle app in esecuzione.
  • I file di log e i file di dati di diagnostica sono disponibili nella stessa cartella di contenuto condiviso.
  • Con la pubblicazione di nuovo contenuto, la cartella del contenuto viene aggiornata direttamente. È possibile visualizzare immediatamente lo stesso contenuto tramite il sito Web SCM e l'app in esecuzione (in genere alcune tecnologie come ASP.NET avviare un riavvio dell'app in alcune modifiche ai file per ottenere il contenuto più recente).

Mentre molte app usano una o tutte queste funzionalità, alcune richiedono solo un archivio del contenuto di sola lettura ad alte prestazioni da cui poterle eseguire con disponibilità elevata. Queste app possono trarre vantaggio da un'istanza di VM di una cache locale specifica.

La funzionalità di cache locale del servizio app di Azure prevede una visualizzazione del contenuto tramite ruolo Web. Questo contenuto è una cache di scrittura ma con rimozione del contenuto di archiviazione che viene creata in modo asincrono all'avvio nel sito. Quando la cache è pronta, il sito viene eseguito rispetto al contenuto memorizzato nella cache. Le app eseguite nella cache locale possono sfruttare i vantaggi seguenti:

  • Sono immuni alle latenze che si verificano quando accedono al contenuto in Archiviazione di Azure.
  • Non sono interessati dai problemi di connessione all'archiviazione, poiché la copia di sola lettura viene memorizzata nella cache nel ruolo di lavoro.
  • Prevedono un numero di riavvii inferiore dovuti a modifiche della condivisione di archiviazione.

Nota

Se si usa Java (Java edizione Standard, Tomcat o JBoss EAP), per impostazione predefinita gli artefatti Java--.jar, war e ear vengono copiati localmente nel ruolo di lavoro. Se l'applicazione Java dipende anche dall'accesso in sola lettura ad altri file, impostare su JAVA_COPY_ALL true per copiare anche tali file. Se la cache locale è abilitata, ha la precedenza su questo miglioramento specifico di Java.

Modalità di modifica del comportamento del servizio app da parte della cache locale

  • D:\home punta alla cache locale, creata nell'istanza della macchina virtuale all'avvio dell'app. D:\local continua a puntare all'archivio temporaneo specifico della macchina virtuale.
  • La cache locale contiene una copia eseguita una sola volta delle cartelle /site e /siteextensions dell'archivio del contenuto condiviso rispettivamente in D:\home\site e D:\home\ siteextensions. I file vengono copiati nella cache locale all'avvio dell'app. Le dimensioni delle due cartelle per ogni app sono limitate a 1 GB per impostazione predefinita, ma possono essere aumentate a 2 GB. Si noti che man mano che le dimensioni della cache aumentano, il caricamento della cache richiederà più tempo. Se è stato aumentato il limite di cache locale a 2 GB e i file copiati superano le dimensioni massime di 2 GB, servizio app ignora automaticamente la cache locale e le letture dalla condivisione file remota.

Importante

Quando i file copiati superano il limite definito per le dimensioni della cache locale o quando non viene definito alcun limite, le operazioni di distribuzione e scambio potrebbero non riuscire con un errore. Per altre informazioni, vedere le domande frequenti .

  • La cache locale è di lettura/scrittura. Le eventuali modifiche vengono tuttavia rimosse quando l'app sposta le macchine virtuali o viene riavviata. Non usare la cache locale per le app che archiviano dati mission-critical nell'archivio del contenuto.
  • D:\home\LogFiles e D:\home\Data contengono i file di log e i dati delle app. Le due sottocartelle vengono archiviate in locale nell'istanza della macchina virtuale e vengono copiate periodicamente nell'archivio del contenuto condiviso. Le app possono salvare in modo permanente i dati e i file di log, scrivendoli in queste cartelle. Tuttavia, la copia nell'archivio del contenuto condiviso è di tipo massimo sforzo e quindi i dati e i file di log potrebbero andare persi a seguito di un arresto anomalo improvviso del sistema dell'istanza di una macchina virtuale.
  • La copia di tipo massimo sforzo influisce sul flusso di registrazione. Si può verificare un ritardo massimo di un minuto per i log inviati nel flusso.
  • Nell'archivio del contenuto condiviso è stata modificata la struttura delle cartelle LogFiles e Data delle app che usano la cache locale. Le cartelle includono ora sottocartelle che seguono il modello di denominazione "identificatore univoco" + timestamp. Ogni sottocartella corrisponde a un'istanza di macchina virtuale in cui l'app è o era in esecuzione.
  • Le altre cartelle D:\home rimangono nella cache locale e non vengono copiate nell'archivio del contenuto condiviso.
  • La distribuzione di app con un qualsiasi metodo supportato implica la pubblicazione direttamente nell'archivio durevole del contenuto condiviso. Per aggiornare le cartelle D:\home\site e D:\home\siteextensions nella cache locale, è necessario riavviare l'app. vedere le informazioni più avanti in questo articolo per rendere il ciclo di vita più lineare.
  • La visualizzazione del contenuto predefinita del sito SCM continua a essere quella dell'archivio del contenuto condiviso.

Abilitare la cache locale nel servizio app

Nota

La cache locale non è supportata nel livello F1 o D1 .

La cache locale viene configurata mediante una combinazione di impostazioni delle app riservate. Queste impostazioni delle app possono essere configurate usando i metodi seguenti:

Configurare la cache locale tramite il portale di Azure

La cache locale viene abilitata per ogni app Web con questa impostazione dell'app: WEBSITE_LOCAL_CACHE_OPTION = Always

Azure portal app settings: Local Cache

Configurare la cache locale tramite 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"
    }
}

...

Modificare l'impostazione delle dimensioni nella cache locale

Per impostazione predefinita, la dimensione della cache locale è 1 GB. Sono incluse le cartelle /site e /siteextensions copiate dall'archivio del contenuto, nonché eventuali log e cartelle di dati creati in locale. Per aumentare questo limite, usare l'impostazione dell'app WEBSITE_LOCAL_CACHE_SIZEINMB. È possibile aumentare le dimensioni fino a 2 GB (2000 MB) per ogni app. Si noti che il caricamento della cache locale richiederà più tempo man mano che aumentano le dimensioni.

Procedure consigliate per l'uso della cache locale del servizio app

È consigliabile usare la cache locale insieme alla funzionalità degli ambienti di gestione temporanea .

  • Aggiungere l'impostazione dell'app permanenteWEBSITE_LOCAL_CACHE_OPTION con il valore Always nello slot di produzione. Se si usa WEBSITE_LOCAL_CACHE_SIZEINMB, aggiungerla anch'essa come impostazione permanente nello slot di produzione.
  • Creare uno slot di gestione temporanea e pubblicare in questo slot. Se si sfruttano i vantaggi della cache locale per lo slot di produzione, in genere non si imposta l'uso della cache locale nello slot di gestione temporanea per abilitare un ciclo di vita di compilazione-distribuzione-test lineare per la gestione temporanea.
  • Testare il sito nello slot di gestione temporanea.
  • Al termine, eseguire un' operazione di scambio tra lo slot di gestione temporanea e lo slot di produzione.
  • Le impostazioni permanenti includono il nome e sono permanenti in uno slot. Di conseguenza, quando lo slot di staging viene scambiato con lo slot di produzione, eredita le impostazioni dell'app della cache locale. Il nuovo slot di produzione scambiato verrà eseguito nella cache locale dopo alcuni minuti e verrà preparato durante la fase di preparazione dello slot successiva allo scambio. Quando lo scambio di slot è stato completato, lo slot di produzione viene eseguito nella cache locale.

Domande frequenti

Cosa accade se viene superato il limite delle dimensioni della cache locale?

Quando i file copiati superano il limite di dimensioni della cache locale, l'app leggerà dalla condivisione remota. Tuttavia, le operazioni di distribuzione e scambio potrebbero non riuscire con un errore. Vedere la tabella seguente per i limiti e i risultati delle dimensioni.

 Dimensioni cache locale File coped Result
≤ 2 GB ≤ dimensioni della cache locale Legge dalla cache locale.
≤ 2 GB > Dimensioni cache locale Legge dalla condivisione remota.
Nota: le operazioni di distribuzione e scambio potrebbero non riuscire con un errore.

Come è possibile stabilire se la cache locale si applica all'app?

Se l'app richiede un archivio del contenuto a prestazioni elevate e affidabile, non usa l'archivio del contenuto per scrivere dati critici in fase di esecuzione e ha una dimensione totale inferiore a 2 GB, è possibile usare la cache locale. Per determinare le dimensioni totali delle cartelle /site e /siteextensions è possibile usare l'estensione del sito relativa all'uso del disco delle app Web di Azure.

Come è possibile verificare se il sito usa la cache locale?

Se viene usata la funzionalità della cache locale con gli ambienti di staging, l'operazione di scambio non verrà completata fino a quando la cache locale non viene preparata. Per verificare se il sito viene eseguito nella cache locale, è possibile controllare la variabile di ambiente del processo di lavoro WEBSITE_LOCALCACHE_READY. Per accedere alle variabili di ambiente del processo di lavoro in più istanze, seguire le istruzioni disponibili nella pagina relativa alla variabile di ambiente del processo di lavoro .

Sono state appena pubblicate nuove modifiche, ma sembra che non siano presenti nell'app. Perché?

Se l'app usa la cache locale, è necessario riavviare il sito per visualizzare le ultime modifiche. Se non si vogliono pubblicare le modifiche in un sito di produzione, vedere le opzioni dello slot nella sezione precedente relativa alle procedure consigliate.

Nota

L'opzione di distribuzione esegui dal pacchetto non è compatibile con la cache locale.

Dove si trovano i log?

Se si usa la cache locale, i log e le cartelle di dati hanno un aspetto leggermente diverso. Tuttavia, la struttura delle sottocartelle rimane la stessa, eccetto il fatto che le sottocartelle sono annidate in una sottocartella con il formato "identificatore VM univoco" + timestamp.

È stata abilitata la cache locale ma l'app viene riavviata comunque. Perché? Pensavo che la cache locale fosse utile in caso di riavvii frequenti dell'app.

La cache locale consente di evitare i riavvii dell'app legati all'archiviazione. L'app può comunque essere ancora soggetta a riavvii durante gli aggiornamenti pianificati dell'infrastruttura della VM. In generale, il numero di riavvii dell'app che si verificano con la cache locale abilitata dovrebbe essere inferiore.

La cache locale impedisce la copia delle directory in un'unità locale più veloce?

Nell'ambito del passaggio che copia il contenuto di archiviazione, qualsiasi cartella denominata repository viene esclusa. Questa soluzione è utile negli scenari in cui il contenuto del sito può contenere un repository di controllo di origine che potrebbe non essere necessario nel funzionamento quotidiano dell'app.

Come scaricare i log della cache locale dopo un'operazione di gestione del sito?

Per scaricare i log della cache locale, arrestare e riavviare l'app. Questa azione cancella la cache precedente.

Perché servizio app inizia a visualizzare i file distribuiti in precedenza dopo un riavvio quando la cache locale è abilitata?

Nel caso in cui servizio app inizi a visualizzare i file distribuiti in precedenza in un riavvio, verificare la presenza dell'impostazione dell'app "WEBSITE_DISABLE_SCM_edizione Standard PARATION=true". Dopo aver aggiunto questa impostazione, le distribuzioni tramite KUDU iniziano a scrivere nella macchina virtuale locale anziché nell'archiviazione permanente. Le procedure consigliate indicate in precedenza in questo articolo devono essere sfruttate, in cui le distribuzioni devono essere sempre eseguite nello slot di staging che non dispone di Cache locale abilitata.

Altre risorse

Informazioni di riferimento sulle variabili di ambiente e sulle impostazioni dell'app