2016-12-08 63 views
9

mam poniżej kod w moim .htaccessJak dodać Wykorzystanie pamięci podręcznej przeglądarki dla CDN w .htaccess?

ExpiresActive On 
ExpiresByType image/jpg "access 1 year" 
ExpiresByType image/jpeg "access 1 year" 
ExpiresByType image/gif "access 1 year" 
ExpiresByType image/png "access 1 year" 
ExpiresByType text/css "access 1 month" 
ExpiresByType application/pdf "access 1 month" 
ExpiresByType application/x-javascript "access 1 month" 
ExpiresByType application/x-shockwave-flash "access 1 month" 
ExpiresByType image/x-icon "access 1 year" 
ExpiresDefault "access 2 days" 

na

cdn.domain.com/abc.jpg (expiration not specified) 
cdn.domain.com/abc.png (expiration not specified) 

sam problem dla JS, CSS & Inne, jak również.

Co muszę umieścić w .htaccess, aby w większości uzyskać w tym wynik.

+0

To są pliki zewnętrzne, tak? Będziesz musiał pobrać zewnętrzny plik '.JS',' css' i dowolne inne pliki, które posiadasz i uruchomić je lokalnie. Można to zrobić za pomocą 'cron'. Sprawdź moją odpowiedź na to pytanie: [Wykorzystaj pamięć podręczną przeglądarki dla JS innej firmy] (http://stackoverflow.com/questions/38376871/leverage-browser-caching-for-3rd-party-js/38377857#38377857) – Lag

+0

HI @thickguru Jak osiągnąć bez pobierania plików. Ponieważ cel używania CDN do poprawy wydajności. Nie mogę tego zrobić –

+0

Nie mogę się bać. Nie z plikami zewnętrznymi. Będzie działać tylko z plikami lokalnymi. Dlatego zaproponowałem użycie 'cron'. – Lag

Odpowiedz

10

Jeśli chcesz skorzystać z funkcji buforowania wyszukiwarki dla sieci CDN, warto buforować pliki, dodając niektóre nagłówki buforowania, takie jak Cache-Control, Expires i Last-Modified.

Dźwignia Przeglądarka cache przy użyciu Mod_Headers

Jeśli jesteś na wspólnym serwerze i gospodarze nie pozwoli mod_expires, nadal można wykorzystujące pamięć podręczną przeglądarki, za pomocą Mod_headers, która będzie dostępna.

# Leverage browser caching using mod_headers # 
<IfModule mod_headers.c> 
    <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> 
     Header set Expires "Wed, 15 Apr 2020 20:00:00 GMT" 
     Header set Cache-Control "public" 
    </FilesMatch> 
</IfModule> 
# End of Leverage browser caching using mod_headers # 

poniżej przykład do testowania:

# 1 YEAR 
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$"> 
Header set Cache-Control "max-age=31536000, public" 
</FilesMatch> 

# 1 WEEK 
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$"> 
Header set Cache-Control "max-age=604800, public" 
</FilesMatch> 

# 3 HOUR 
<FilesMatch "\.(txt|xml|js|css)$"> 
Header set Cache-Control "max-age=10800" 
</FilesMatch> 

# NEVER CACHE - notice the extra directives 
<FilesMatch "\.(html|htm|php|cgi|pl)$"> 
Header set Cache-Control "max-age=0, private, no-store, no-cache, must-revalidate" 
</FilesMatch> 

Testing nagłówki

Można sprawdzić, czy Cache-Control: header max-age jest w miejscu na plikach, uruchamiając polecenie "zwijania", takie jak:

curl -I http://foo.bar.netdna-cdn.com/file.ext 

HTTP/1.1 200 OK 
Date: Fri, 16 Sep 2014 14:12:20 GMT 
Content-Type: text/css 
Connection: keep-alive 
Cache-Control: max-age=604800, public ← 1 Week caching time 
Expires: Thu, 21 May 2015 20:00:00 GMT 
Vary: Accept-Encoding 
Last-Modified: Thu, 24 Jan 2013 20:00:00 GMT 
GMT; path=/; domain=.domain.com 
Server: NetDNA-cache/2.2 
X-Cache: HIT 

użyłeś poniżej kodu:

Browser buforowanie przy użyciu mod_expires
Najczęstszym sposobem na wykorzystanie pamięci podręcznej przeglądarki jest użycie mod_expires. Poniższy kod można dodać do pliku .htaccess i automatycznie włączyć buforowanie przeglądarki dla wszystkich użytkowników.

# Leverage browser caching using mod_expires # 
<IfModule mod_expires.c> 
    ExpiresActive On 
    ExpiresByType image/jpg "access plus 1 year" 
    ExpiresByType image/jpeg "access plus 1 year" 
    ExpiresByType image/gif "access plus 1 year" 
    ExpiresByType image/png "access plus 1 year" 
    ExpiresByType text/css "access plus 1 month" 
    ExpiresByType application/pdf "access plus 1 month" 
    ExpiresByType text/x-javascript "access plus 1 month" 
    ExpiresByType application/x-shockwave-flash "access plus 1 month" 
    ExpiresByType image/x-icon "access plus 1 year" 
    ExpiresDefault "access plus 2 days" 
</IfModule> 
# End of Leverage browser caching using mod_expires # 
+0

Twoje rozwiązanie działa :) Dzięki –

2

Prawdopodobnie nie jest najlepszym pomysłem buforowanie plików CDN na hoście. Jeśli możesz wykorzystać na swoim hoście CDN, lepiej jest przechowywać w pamięci podręcznej pliki, dodając niektóre nagłówki buforowania, takie jak Cache-Control, Wygasa, Ostatnio zmodyfikowany i tak dalej.

To lepsze, ponieważ dodajesz nagłówki pamięci podręcznej w jednym miejscu - CDN, zamiast dodawać reguły buforowania do każdej witryny, która używa twojego CDN.

6

Co to jest buforowanie przeglądarki?

Buforowanie przeglądarki to proces przechowywania wcześniej żądanych plików w lokalnej pamięci podręcznej przeglądarki, aby skrócić czas ładowania. Gdy plik jest przechowywany lokalnie, do wysłania na serwer potrzeba mniejszej liczby żądań, a do pobrania wymagane jest mniej danych.

enter image description here

Są pewne elementy, które muszą być włączony żeby prawidłowo zwiększenie rozpoznawalności buforowanie przeglądarki. Na przykład należy upewnić się, że określono walidator pamięci podręcznej, aby pomóc przeglądarce określić, czy plik można nadal pobierać z lokalnej pamięci podręcznej lub czy należy wysłać żądanie do serwera. Ponadto musisz poprawnie ustawić nagłówki Expires lub Cache-Control dla swoich zasobów. Używanie obu byłoby zbędne. Ponadto Gtmetrix preferuje funkcję Expires over Cache-Control, ponieważ jest ona szerzej obsługiwana. Dlatego ten artykuł skupi się na użyciu nagłówków Expires podczas demonstrowania, jak wykorzystać buforowanie przeglądarki.

Cache-Control
Cache-Control pozwala nam mieć nieco większą kontrolę naszej pamięci podręcznej przeglądarki i wiele osób uważa, że ​​łatwiej używać raz konfiguracji.

# 1 Year for most static assets 
<filesMatch ".(css|jpg|jpeg|png|gif|js|ico)$"> 
Header set Cache-Control "max-age=31536000, public" 
</filesMatch> 

Gzip Comporession (Vary Przydatne Dla Magento)

<ifModule mod_gzip.c> 
    mod_gzip_on Yes 
    mod_gzip_dechunk Yes 
    mod_gzip_item_include file \.(html?|txt|css|js|php|pl|asp|html)$ 
    mod_gzip_item_include handler ^cgi-script$ 
    mod_gzip_item_include mime ^text/.* 
    mod_gzip_item_include mime ^application/x-javascript.* 
    mod_gzip_item_exclude mime ^image/.* 
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* 
</ifModule> 

<ifmodule mod_deflate.c> 
    AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript 
</ifmodule> 

zależności od plików Twojej witryny można ustawić różne czasy ważności.
Jeśli niektóre typy plików są aktualizowane częściej, należy ustawić na nich wcześniejszy czas wygaśnięcia (np. Pliki CSS).

Otwórz swój plik .htaccess. (bądź mądry: utwórz kopię oryginalnego pliku .htaccess, jeśli przypadkowo popełnisz błąd i musisz go cofnąć).

Teraz nadszedł czas, aby włączyć Wygasa moduł nagłówki w Apache (Ustawienie 'ExpiresActive' na 'On'), więc dodać to do pliku .htaccess:

<IfModule mod_expires.c> 

# Enable expirations 
ExpiresActive On 

</IfModule> 

To może być użyteczne aby dodać „dyrektywę domyślny” dla domyślnego terminu ważności, więc to jest 2 rzędy dodamy teraz:

<IfModule mod_expires.c> 

# Enable expirations 
ExpiresActive On 

# Default directive 
ExpiresDefault "access plus 1 month" 

</IfModule> 

To baza. Teraz dodaj wszystkie linie dla każdego z typów plików (wiesz, utworzonego wcześniej na swojej favicon te, zdjęć, CSS i JavaScript). Skończysz z fragmentem kodu, który wygląda mniej więcej tak:

<IfModule mod_expires.c> 

# Enable expirations 
ExpiresActive On 

# Default directive 
ExpiresDefault "access plus 1 month" 

# My favicon 
ExpiresByType image/x-icon "access plus 1 year” 

# Images 
ExpiresByType image/gif "access plus 1 month" 
ExpiresByType image/png "access plus 1 month" 
ExpiresByType image/jpg "access plus 1 month" 
ExpiresByType image/jpeg "access plus 1 month" 

# CSS 
ExpiresByType text/css "access 1 month” 

# Javascript 
ExpiresByType application/javascript "access plus 1 year" 

</IfModule> 

Teraz uruchom kolejny test z GTmetrix i porównać wyniki.Jest to wynik mojej stronie testowej, po wdrożeniu Wygasa nagłówki:

Rekomendacje

  • być agresywny z buforowania dla wszystkich zasobów statycznych
  • ważności co najmniej jednego miesiąca (zalecane: dostęp plus 1 rok)
  • Nie ustawiaj buforowania na więcej niż rok wcześniej!

Browser buforowanie przy użyciu WordPress Plugin

W3 Total Cache: Jeden z najlepszych plugin buforowania z wielu funkcji, takich jak buforowanie, integracji CDN (jak MaxCDN), które przyspieszy skuteczność witryny.

Uwaga

  1. Upewnij się, że mod_rewrite jest włączona na serwerze WWW Apache, jeśli nie, to skontaktuj się z serwera WWW zespół techniczny, aby ją włączony jako moduł rewrite będą potrzebne do zakończenia działania buforowania .
  2. Ostrzeżenie! Jeśli ustawisz datę przydatności do użycia w przyszłości, a następnie zaktualizujesz jeden z tych plików, musisz zmienić nazwę pliku , aby przeglądarka ponownie go pobrała.
    Przykład: jeśli ustawisz javascript na 1 rok i zaktualizujesz jeden z plików javascript, będziesz musiał zmienić nazwę pliku. Dobrym sposobem na zrobienie tego jest wersja, czyli myfile_v1.2.js, ale łatwiej jest zachować ostrożność przy nagłówkach Expires (ustawienie coś na 10 lat nigdy nie jest dobrą opcją IMO).

Czy zauważyłeś jakieś ulepszenia dla swojej witryny? Czy powyższe zajmie się wszystkimi plikami wymienionymi w "Wykorzystanie buforowania przeglądarki" i "Dodaj nagłówki Expires"? Daj mi znać w komentarzach poniżej.

+0

Twoje rozwiązanie działa :) Dzięki –

+0

Witaj!, Możesz bardziej zoptymalizować go stąd http://stackoverflow.com/documentation/magento/8010/optimizing-magento-for-speed # t = 201612140842090229769 –