Настроих MEAN стек (Mongo + Express + Angular + nodejs) и трябваше да ускоря зареждането на приложението с кеширане.
Кеширането е може би едно от най-важните неща, които трябва да направите, за да подобрите представянето и SEO. Моите приложения се захранват с Nginx, защото е бързо и лесно, така че започнах да търся начин да инсталирам кеш с nginx.
Задънената улица
Първото нещо, което ще намерите, ако търсите кеширане на статични файлове с nginx е:
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Vary Accept-Encoding;
access_log off;
}
Просто добавете тази част от кода ПРЕДИ всеки location
в конфигурацията на вашия сървър и трябва да работи.
В моя случай не стана.
Истинското — по-сложно — решение
Вместо да използваме expires
, сякаш ще го използваме с map
.
Ето как го направих:
Отворете вашата конфигурация на сървъра и добавете върху нея:
# Expires map
map $sent_http_content_type $expires {
default off;
text/html epoch;
text/css max;
application/javascript 7d;
~image/ max;
}
По този начин имате много прецизен начин да кеширате статични файлове, просто предоставете MIMEType и дължината, която искате да ги кеширате, и сте добре!
Nginx е много мощен за настройка на дължината на кеширащите файлове:
off
е за контролен хедър без кеширане — всичко, което не искате да се кешираepoch
е специална стойност, тя конкретно изисква от браузъра винаги да пита дали самият уебсайт е актуаленmax
задайте кеша на максимума, който браузърът може да обработва (с Firefox е315360000 seconds
)7d
е персонализирана стойност, това означава 7 дни почивка от курса, можете да използвате каквото искатеm
е за минути,M
за месеци… Ето документа за nginx време
След това във вашия сървърен блок:
server { listen 80; expires $expires; …
И след това, разбира се, рестартирайте вашия уеб сървър:
sudo systemctl restart nginx
Тествайте го!
Отворете уебсайта си, проверете раздела мрежа в конзолата за програмисти и трябва да видите нещо като:
Двете важни заглавки тук са:
Cache-Control
: Тук можем да видим 7 дни (604800 сек.)Expires
е датата, когато моят браузър ще поиска отново от сървъра нова версия на файловете. В противен случай ще използва този, съхранен в неговия кеш.
Можете също така да проверите времето за зареждане, трябва да е много по-добре!