Qual è il modo migliore per reimpostare da remoto la cache del server in una web farm?

StackOverflow https://stackoverflow.com/questions/76855

  •  09-06-2019
  •  | 
  •  

Domanda

Ciascuno dei nostri server Web di produzione mantiene la propria cache per siti Web separati (applicazioni Web ASP.NET).Attualmente per svuotare la cache accediamo al server e "tocchiamo" il file web.config.

Qualcuno ha un esempio di un modo sicuro per farlo da remoto reimpostare la cache per un'applicazione Web specifica?Idealmente dovremmo poter dire "svuota la cache per l'app X in esecuzione su tutti i server" ma anche "svuota la cache per l'app X in esecuzione sul server Y".

Modifiche/Chiarimenti:

  • Probabilmente dovrei chiarire che farlo tramite l'applicazione stessa non è realmente un'opzione (ad es.una sorta di accesso all'applicazione, navigazione in una pagina o gestore specifico che cancellerebbe la cache).Per fare qualcosa del genere dovremmo disabilitare/ignorare il codice di registrazione e di monitoraggio delle statistiche o confondere le nostre statistiche.

  • Sì, la cache scade regolarmente.Quello che mi piacerebbe fare però è impostare qualcosa in modo da poter far scadere una cache specifica su richiesta, di solito dopo aver modificato qualcosa nel database (stiamo usando SQL 2000).Possiamo farlo ora, ma solo accedendo ai server stessi.

È stato utile?

Soluzione 2

Trovato un DevX articolo riguardante un'utilità touch che sembra utile.

Proverò a combinarlo con una tabella nel database (aggiungi un record e l'utilità touch lo troverà e aggiornerà il file web.config appropriato) o un servizio Web (effettui una chiamata e l'utilità touch verrà richiamata per l'aggiornamento il file web.config appropriato)

Altri suggerimenti

Per ogni applicazione, potresti scrivere un piccolo script cache-dump.aspx per eliminare i dati della cache/applicazione.Copialo su tutte le tue applicazioni e scrivi uno script hub per gestire le chiamate.

Per motivi di sicurezza, potresti aggiungere tutti i tipi di ricerche di autenticazione o controllo IP.

Ecco il modo in cui eseguo l'effettivo dump dell'app:

Context.Application.Lock()
Context.Session.Abandon()
Context.Application.RemoveAll()
Context.Application.UnLock()

Questo potrebbe non essere "elegante", ma potresti impostare un'attività pianificata che esegue uno script batch.Lo script essenzialmente "toccherebbe" il web.config (o qualche altro file che provoca una ricompilazione) per te.

Altrimenti, la cache dell'applicazione non è impostata per scadere dopo N minuti?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top