Ehilà! In qualità di fornitore di Varnish, ho visto in prima persona quanto sia importante scrivere un codice VCL (Varnish Configuration Language) efficace. In questo post del blog condividerò alcuni suggerimenti e trucchi su come scrivere VCL come un professionista.
Comprendere le basi della VCL
Per prima cosa, parliamo di cos'è la VCL. Varnish è un acceleratore di applicazioni web (noto anche come cache) che si trova davanti al tuo server web. VCL è il linguaggio di programmazione utilizzato per configurare Varnish. Ti consente di controllare come si comporta Varnish, ad esempio quali richieste memorizzare nella cache, per quanto tempo memorizzarle nella cache e cosa fare quando si verifica un errore nella cache.
Il codice VCL è organizzato in subroutine, che sono come funzioni in altri linguaggi di programmazione. Ogni subroutine ha uno scopo specifico e Varnish richiama queste subroutine nelle diverse fasi del processo di richiesta e risposta. Alcune delle subroutine più importanti includonovcl_recv,vcl_hash,vcl_backend_fetch, Evcl_consegna.
A partire da una semplice configurazione VCL
Quando hai appena iniziato con VCL, è una buona idea iniziare con una configurazione semplice. Ecco un esempio di un file VCL di base:


vcl4.0; valore predefinito del backend {.host = "127.0.0.1"; .porta = "8080"; } sub vcl_recv { return (passa); } sub vcl_backend_response { return (consegna); } sub vcl_deliver { return (consegna); }
In questo esempio, definiamo un server backend su127.0.0.1:8080. ILvcl_recvla subroutine viene chiamata quando Varnish riceve una richiesta del client. In questo caso, passiamo semplicemente la richiesta al server backend senza memorizzarla nella cache. ILvcl_backend_responsela subroutine viene chiamata quando Varnish riceve una risposta dal server backend e noi forniamo la risposta al client. ILvcl_consegnala subroutine viene utilizzata anche per fornire la risposta al client.
Strategie di memorizzazione nella cache
Uno dei motivi principali per utilizzare Varnish è memorizzare nella cache i contenuti e ridurre il carico sui server backend. Esistono diverse strategie di memorizzazione nella cache che puoi utilizzare nella VCL, a seconda delle esigenze della tua applicazione.
Memorizzazione nella cache di contenuto statico
Il contenuto statico, come immagini, file CSS e file JavaScript, è un ottimo candidato per la memorizzazione nella cache. Puoi configurare Varnish per memorizzare nella cache questi file per un lungo periodo. Ecco un esempio di come memorizzare nella cache il contenuto statico:
sub vcl_recv { if (req.url ~ "\.(jpg|jpeg|png|gif|css|js)$") { return (hash); } ritorno (passaggio); }
In questo esempio, se l'URL della richiesta termina con.jpg,.jpeg,.png,.gif,.css, O.js, inviamo la richiesta alvcl_hashsubroutine da memorizzare nella cache. Altrimenti, passiamo la richiesta al server backend.
Memorizzazione nella cache di contenuti dinamici
La memorizzazione nella cache dei contenuti dinamici può essere un po' più complicata, poiché è necessario assicurarsi che i contenuti memorizzati nella cache siano ancora validi. Puoi utilizzare tecniche come tag di cache e chiavi surrogate per gestire la cache per il contenuto dinamico. Ecco un esempio di come utilizzare i tag della cache:
sub vcl_backend_response { if (beresp.http.X-Cache-Tag) { set beresp.http.X-Cache-Tags = beresp.http.X-Cache-Tag; } ritorno (consegna); } sub vcl_purge { if (req.http.X-Cache-Tags) { ban("obj.http.X-Cache-Tags ~ " + req.http.X-Cache-Tags); } return (synth(200, "Eliminato")); }
In questo esempio, quando il server backend imposta il fileX-Cache-Tagheader, lo copiamo nel fileTag X-Cacheintestazione nella risposta di Varnish. Quando arriva una richiesta di eliminazione con il fileTag X-Cacheheader, vietiamo tutti gli oggetti che corrispondono ai tag della cache.
Gestione degli errori di cache
Quando si verifica un errore nella cache, Varnish deve recuperare il contenuto dal server backend. Puoi usare ilvcl_backend_fetchsubroutine per controllare il modo in cui Varnish recupera il contenuto. Ecco un esempio:
sub vcl_backend_fetch { set bereq.http.User-Agent = "Varnish Cache"; ritorno (recupero); }
In questo esempio impostiamo il fileAgente utenteintestazione nella richiesta al server backend a "Varnish Cache" prima di recuperare il contenuto.
Utilizzo delle funzionalità VCL avanzate
Varnish ha diverse funzionalità avanzate che puoi utilizzare per personalizzare il suo comportamento.
Manipolazione delle intestazioni HTTP
Puoi manipolare le intestazioni HTTP in Varnish per aggiungere, rimuovere o modificare le intestazioni. Ecco un esempio di come aggiungere un'intestazione personalizzata:
sub vcl_deliver { set resp.http.X-Custom-Header = "Questa è un'intestazione personalizzata"; restituire (consegnare); }
In questo esempio aggiungiamo un'intestazione personalizzata chiamataX-Intestazione personalizzataalla risposta prima di consegnarla al cliente.
Logica condizionale
Puoi utilizzare la logica condizionale in Varnish per prendere decisioni in base alla richiesta o alla risposta. Ecco un esempio di come utilizzare la logica condizionale per reindirizzare le richieste:
sub vcl_recv { if (req.url == "/old-page") { return (synth(301, "http://example.com/new-page")); } ritorno (passaggio); }
In questo esempio, se l'URL della richiesta è/vecchia-pagina, inviamo un reindirizzamento 301 ahttp://example.com/nuova-pagina.
I nostri prodotti vernicianti
In qualità di fornitore di vernici, offriamo una gamma di prodotti vernicianti di alta qualità. Dai un'occhiata al nostroVernice trasparente a base acqua,Top Coat opaco a base acqua, ELucido poliuretanico a base acqua. Questi prodotti sono adatti a varie applicazioni e possono fornire protezione e finitura eccellenti.
Conclusione
Scrivere un codice VCL efficace richiede tempo e pratica, ma ne vale la pena. Comprendendo le nozioni di base di VCL, utilizzando strategie di memorizzazione nella cache appropriate e sfruttando funzionalità avanzate, puoi ottimizzare le prestazioni della tua applicazione Web e ridurre il carico sui server backend.
Se sei interessato ai nostri prodotti Varnish o hai bisogno di maggiori informazioni sulla configurazione VCL, non esitare a contattarci per una discussione sull'approvvigionamento. Siamo qui per aiutarti a trovare le soluzioni migliori per le tue esigenze.
Riferimenti
- Documentazione sulla vernice
- Varie risorse online su Varnish e web caching
