Tato příručka ukazuje, jak správně nakonfigurovat nastavení vypršení platnosti záhlaví pomocí Apache a optimalizovat výkon webového serveru při poskytování statických souborů, jako jsou obrázky, soubory CSS nebo JavaScript.
Na vašem serveru bude ušetřeno velké množství šířky pásma nastavením minimálního data pro uložení souboru do mezipaměti. V důsledku toho se pomocí mezipaměti prohlížeče klienta budou hostované webové stránky načítat rychleji.
Nejprve se připojte k serveru prostřednictvím připojení SSH. Pokud jste tak ještě neučinili, doporučujeme se podle našeho průvodce bezpečně připojit pomocí SSH. V případě lokálního serveru přejděte k dalšímu kroku a otevřete terminál svého serveru.
Povolení potřebných modulů
Chcete-li povolit odesílání nezbytných záhlaví, nejprve povolte související modul Apache:
$ sudo a2enmod expires
A potom restartujte službu:
$ sudo service apache2 restart
Konfigurace modulu
Konfiguraci modulu lze vložit do následujícího:
V konfiguraci Apache:bude zděděna všemi weby ovládanými Apache (virtuální i nevirtuální hostitelé)
V kontejneru virtuálního hostitele
V rámci direktivy
nebo souboru .htaccess
V následujícím příkladu je vložen do výchozí konfigurace webu:
$ sudo vim /etc/apache2/sites-available/000-default.conf
Pak přidejte následující konfiguraci:
<IfModule mod_expires.c>
<FilesMatch "\.(jpe?g|png|gif|js|css)$">
ExpiresActive On
ExpiresDefault "access plus 1 week"
</FilesMatch>
</IfModule>
Prostřednictvím direktivy FilesMatch se specifikují, které soubory by měl klientský prohlížeč uchovávat (v tomto případě css, jpg, png, gif a js).hile, prostřednictvím ExpiresDefault, jak dlouho by měly být uchovávány (v tomto příkladu týden) pro je uvedeno.
Chcete-li použít změny, restartujte Apache:
$ sudo service apache2 restart
Kromě metod FilesMatch a ExpiresDefault lze ExpiresByType použít k nastavení konce platnosti záhlaví pro každý typ souboru, například:
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpg "access plus 60 days"
ExpiresByType image/png "access plus 60 days"
ExpiresByType image/gif "access plus 60 days"
ExpiresByType image/jpeg "access plus 60 days"
ExpiresByType text/css "access plus 1 days"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/javascript "access plus 1 week"
</IfModule>
Pomocí této metody lze získat podrobnější kontrolu nad trváním mezipaměti a ukládáním dat Ajax do mezipaměti tím, že nevložíte aplikaci/javascript typu mime.
Pro obě direktivy je syntaxe indikující dobu trvání mezipaměti stejná, to znamená:
“[base] plus [valore] [tipo] [valore] [tipo] [valore] [tipo] …”
Základní hodnota může být:
přístup:datum požadavku klienta
úprava:datum změny souboru
I když typ může mít následující hodnoty:
roky:roky
měsíce:měsíce
týdny:týdny
dny:dny
hodiny:hodiny
minuty:minuty
sekundy:sekundy
Některé příklady konfigurace:
# One year cache expiry
ExpiresByType image/jpeg "access plus 1 year"
#Furthermore, more than one unit of measurement in sequence can be added. For example:
# Set 1-month, 15- day and 2-hour expiry
ExpiresByType text/html "access plus 1 month 15 days 2 hours"
# Cache expiry from the file modification date more than 5 hours and 3 minutes
ExpiresByType image/gif "modification plus 5 hours 3 minutes"
Mějte na paměti, že pokud musíte změnit obsah souboru uloženého v mezipaměti, klienti jej nestahují, dokud nevyprší čas ukládání do mezipaměti. To by mohlo způsobit poruchy na vašich webových stránkách.
Přestože klienty nelze přinutit ignorovat dříve uloženou mezipaměť, lze tomuto problému předejít několika technikami.
Často používanou metodou je přejmenování právě upraveného souboru (například ze style.css na styl-v2.css) nebo změna odkazů přidáním čísla verze, například z:
<script src="https://www.domain.com/js/myScript1.js"></script>
na následující:
<script src="https://www.domain.com/js/myScript1.js?v=3.1"></script>