Am decis să scriu un articol de recenzare despre metodele de cache a site-urilor Drupal și am găsit pe Internet articolul de la consultantul tehnic Acquia, care atinge doar acest subiect. Prin urmare, astăzi va fi o traducere a acestui articol.
Acesta este primul post din blogul din seria despre strategiile de caching în Drupal. În acest post, vom încerca să înțelegem ce caracteristici din planul de caching sunt în Drupal "afară din cutie" și care sunt opțiunile pentru extinderea activității site-urilor cu încărcături mari.
Spre deosebire de site-urile HTML statice, paginile site-ului Drupal constau din blocuri care se formează independent unul de altul înainte de a fi îmbinate și trimise browserului în ansamblul său. Drupal este o platformă dinamică, care generează conținut, astfel încât să genereze o pagină care va fi trimis la browser-ul de pe serverul Web se execută o secvență de acțiuni, cum ar fi o conexiune bază de date, opțiunile de descărcare și module, inițializarea sesiune utilizatorului, cartografiere URL-ul în PHP provocare pentru executați logica aplicației și colectați toate elementele din jurul conținutului principal al paginii.
Majoritatea acestor pași se repetă de fiecare dată în timpul generării de pagini, dar cu o strategie eficientă de cache, puteți minimiza utilizarea resurselor în timpul acestor pași, salvând rezultatul calculelor repetitive. Acest lucru devine mai dificil cu traficul de la utilizatorii înregistrați, deoarece folosesc pagini personalizate, ceea ce exclude posibilitatea de cache a întregii pagini. În aceste cazuri mai complexe, un cache de nivel inferior este utilizat pentru stocarea unităților individuale de pagini.
Cu cât mai multe elemente sunt stocate în memoria cache, cu atât mai mult trebuie să se țină cont de backend-ul, care stochează informații.
În mod implicit, Drupal cachează informațiile direct în baza de date. Acest lucru poate fi văzut din mai multe tabele din baza de date Drupal ale căror nume încep cu "cache_".
În Drupal, aveți posibilitatea să stocați în cache întregi pagini sau părți din acestea și să utilizați din nou aceste informații pentru a genera pagini noi.
Page Caching
Dacă paginile par aceleași în toate situațiile și contextul utilizatorului nu contează, atunci aceste pagini pot fi stocate în cache și pot fi date utilizatorilor prin cache-ul cache-ului. Există mai multe opțiuni pentru cachearea unor astfel de pagini:
- Reverse proxy (extra caching). Un proxy invers este un tip de server proxy care, în numele clientului, solicită informații de la unul sau mai multe servere. Utilizarea serverului proxy invers Varnish este popular în arhitectura (infrastructura IT) a proiectelor Drupal de înaltă încărcare. Lacul este în fața serverului web și cererile de cache nu au cookie-uri. Lacul poate fi utilizat pentru stocarea în cache a solicitărilor anonime, deoarece este incredibil de rapid prin stocarea întregii memorii cache în memorie și, dacă este necesar, pe hard disk. Drupal 7 a construit-in-suport Varnish, în timp ce integrarea cu Drupal 6, trebuie să utilizați Pressflow, astfel încât cererile anonime nu au fost cookie-uri. Implicit modul Drupal va bază transparentă folosi „durata de viață maximă cache“ pentru a determina data de expirare, dar, de exemplu, modulul Expirație poate fi folosit pentru a curăța cache-ul de acoperire cu lac atunci când conținutul este modificat, asigurând utilizatorilor cele mai recente informații. Paginile care sunt transmise direct din memoria cache a lacului conțin informații suplimentare pentru a vă ajuta să determinați dacă funcționarea corectă a cache-ului. În Acquia suntem fanii lacului, orice pagină transmisă de cloud acquia conține aceste informații, de exemplu, acquia.com:
- Boost. Boost este un modul care utilizează un fișier modificat .htaccess pentru a încărca pagini de pe un disc în loc să ruleze PHP pentru a genera dinamic o pagină. Acest modul generează pagini HTML de fiecare dată când este accesată o pagină și salvează această pagină într-un fișier HTML pe disc. La următoarea solicitare Apache, înainte de a cere Drupal, va verifica prezența fișierului HTML pe disc și va încerca să emită acest fișier. Modulul Boost include un crawler care rulează pe coroană și re-generează conținut învechit, pentru încărcarea mai rapidă a paginilor. Paginile emise direct din memoria cache Boost conțin o comandă rapidă la sfârșitul codului HTML, de exemplu:
- Caching încorporat. În Drupal, este posibil să salvați paginile direct pe backend-ul de cache. Dacă este activată cache-ul, atunci Drupal va cache paginile pentru utilizatorii anonimi de fiecare dată când este generată pagina. Următoarea solicitare anonimă va primi o versiune stocată în cache a paginii în loc de a genera din nou pagina.
Când pagina este încărcată din cache-ul nu va fi numit cârlige Drupal (numite doar hook_boot și hook_exit), astfel încât înainte de a activa cache-ul este important să se asigure că cârlige nu ar trebui să fie chemat la fiecare solicitare de pagină.