Si të konfiguroni titujt e Cache-Control në Apache
Shfletuesi i çdo përdoruesi përdor një memorie të integruar për të ruajtur objektet e shkarkuara, të cilat mund të përshpejtojnë ndjeshëm vizitat e përsëritura në faqen tuaj të internetit duke ngarkuar nga disku dhe jo nga rrjeti. Ja se si ta konfiguroni atë në Apache.
Si funksionon Caching?
Herën e parë që një përdorues lidhet me faqen tuaj, ai do të shkarkojë të gjitha burimet statike të nevojshme për të dhënë faqen, duke përfshirë gjëra të tilla si logoja juaj. Kur ata lundrojnë në një faqe të re, ajo do të ngarkojë logon tuaj nga kujtesa në vend që ta kërkojë përsëri, duke përshpejtuar ndjeshëm performancën dhe duke zvogëluar ngarkesën në serverin tuaj të internetit gjatë procesit.
Ky është një cache nga ana e klientit, por shumë sajte do të përdorin gjithashtu një Rrjet të shpërndarjes së përmbajtjes, ose CDN. Një CDN është një rrjet serverësh që qëndrojnë përballë serverit tuaj kryesor të uebit, ose serverit të origjinës. Ky rrjet ruan faqet tuaja në memorie, duke rritur gjerësinë e brezit tuaj maksimal, duke reduktuar vonesën e aksesit dhe duke reduktuar në masë të madhe stresin e vendosur në serverin tuaj të origjinës. Nëse dëshironi të mësoni më shumë rreth CDN-ve, mund të lexoni udhëzuesin tonë për to këtu.
Cache-Control
është një titull që mund të konfiguroni serverin tuaj të uebit për ta shtuar në të gjitha kërkesat dalëse, i cili do t'i tregojë shfletuesit dhe CDN-ve se si të ruajnë përmbajtjen tuaj në memorie.
Disa faqe nuk duhet kurrë të ruhen në memorien specifike nga memoriet e përbashkëta si CDN-të. Duke vepruar kështu do të rrezikoni të shfaqni informacionin personal të një përdoruesi te të tjerët. Si rregull i përgjithshëm, nëse faqja do të jetë saktësisht e njëjtë për të gjithë përdoruesit, si faqja juaj kryesore, mund ta ruani atë në memorie. Nëse tregon informacione konfidenciale të përdoruesit, do të dëshironi t'i vendosni ato në listën e zezë nga cache juaj. Burimet statike, si CSS dhe imazhet, zakonisht mund të ruhen në memorie për të gjithë, shpesh për shumë më gjatë.
Sasia e kohës që kalon objekti në cache është gjithashtu e rëndësishme. Referuar si Time-To-Live (TTL), mosha maksimale e burimeve tuaja të ruajtura në memorie përcakton se sa kohë do të qëndrojë objekti në cache përpara se të zhvlerësohet dhe duke e nxitur përdoruesin të kërkojë një objekt të ri. Për burimet statike që nuk ndryshojnë shumë, mund të vendosni vlera shumë të larta TTL, zakonisht rreth dy vjet. Për gjërat që mund të dëshironi të përditësoni, do të dëshironi të vendosni vlera më të ulëta TTL për të parandaluar që burimet e ndenjura të jenë në cache për një kohë të gjatë.
Ju gjithmonë mund të përdorni emra skedarësh të versionuar për të aktivizuar një ringarkim të cache-it. Nëse lëshoni një version të ri të një fletë stili CSS, mund ta emërtoni atë styles-1.0.1.css
dhe shfletuesi i përdoruesit (dhe çdo CDN përpara tij) do ta shohë atë si një të re skedari që duhet të rishkarkohet. Për më tepër, për disa CDN, mund të lëshoni anulime manuale për të shpëlarë memorien ekzistuese pa ndryshuar asnjë emër skedari.
Si të përdorni Cache-Control në Apache
Cache-Control
ka disa opsione:
publik
– Mund të ruhet nga kushdo, duke përfshirë shfletuesit dhe CDN-të. Përdoreni këtë për shumicën e objekteve statike.private
– Përmban të dhëna të ndjeshme që nuk mund të ruhen në memorien specifike nga CDN-të ose përfaqësuesit e kundërt. Shfletuesi i përdoruesit mund ta ruajë atë në memorie lokale. Përdoreni këtë për shumicën e faqeve të vërtetuara.pa memorie të fshehtë
– Pavarësisht emrit, nuk e çaktivizon ruajtjen në memorie. Shfletuesi mund të ruajë përgjigjen për performancën, por duhet të kontrollojë me serverin e origjinës për përditësime përpara se ta përdorë atë. Përdoreni këtë nëse dëshironi që përdoruesi të rivlerësohet çdo herë.pa dyqan
– Çaktivizon plotësisht ruajtjen në memorie. Përdoreni këtë vetëm për të dhëna shumë të ndjeshme që nuk duhet të dërgohen dy herë.
Për më tepër, mund të shtoni direktivën no-transform
, e cila çaktivizon çdo konvertim që mund të bëhet në burim. Për shembull, disa CDN kompresojnë imazhet për të reduktuar gjerësinë e brezit. Kjo direktivë e pamundëson atë sjellje.
Në Apache, do t'ju duhet ta vendosni manualisht këtë titull duke përdorur direktivën Set i titujve
, si kjo:
Header set Cache-Control "max-age=84600, public"
Vlera max-age
është vendosur në sekonda, për shembull, max-age=300
për një TTL pesë minutëshe dhe max-age=63072000 për dy vjet.
Ju mund ta vendosni këtë direktivë në rrënjën e konfigurimit tuaj për të aplikuar në të gjithë sitin, por një metodë më e mirë është të aplikoni cilësimet në varësi të llojit të skedarit. Për shembull, për të vendosur një TTL të lartë për shumicën e mediave statike, mund të përdorni një bllok FilesMatch
:
<FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=63072000, public"
</FilesMatch>
Nëse dëshironi të futni në listën e zezë një shteg specifik nga ruajtja e memories nga CDN-të, mund të përdorni një bllok Directory
:
<Directory "/private">
Header set Cache-Control "max-age=300, private"
</Directory>
Ose thjesht përputhni një skedar të vetëm:
<File "protected.html">
Header set Cache-Control "max-age=300, private"
</File>
Blloqet me ndeshjet më specifike do të kenë përparësi ndaj ndeshjeve të përgjithshme regex, por ju do të dëshironi të verifikoni se gjithçka është vendosur siç duhet në fundin marrës. Mund ta kontrolloni këtë nga DevTools të Chrome, te Rrjeti > Titujt.
Nëse keni akses vetëm në konfigurimin .htaccess
, mund të përdorni përsëri përputhjen e drejtorive duke krijuar një skedar të ri .htaccess
në çdo nëndrejtori.
Përdorni Surrogate-Control për të modifikuar drejtpërdrejt sjelljen CDN
Kreu i Surrogate-Control
funksionon saktësisht si Cache-Control
, por detajon udhëzime specifike për CDN-të dhe përfaqësuesit e kundërt, në vend të përdoruesve fundorë. Në këtë mënyrë, ju mund t'u thoni CDN-ve të bëjnë një gjë, por dërgoni udhëzime të ndryshme në shfletues.
Ju do të duhet ta vendosni manualisht këtë titull, në të njëjtën mënyrë si vendosni Cache-Control
:
Header set Surrogate-Control "max-age=300, public"
Ju patjetër do të dëshironi të provoni me CDN-në tuaj për të verifikuar që kjo funksionon—Surrogate-Control
është mjaft e re dhe nuk është universale.