Tăng tốc WordPress với varnish cache

Quảng cáo
Ads_ngang
Website dinhthuanit.com có bài Tăng tốc WordPress với varnish cache

Ở bài trước mình có chỉ dẫn cách tăng tốc wordpress bằng WP Super Cache plugin. Trong bài hôm nay, mình sẽ nói đến varnish cache, một trong số ứng dụng cache tốt nhất hiện nay. Bạn sẽ nắm được mỗi bước cài đặt và cấu hình varnish và tích hợp vào WordPress site. Nào chúng ta hãy bắt đầu nhé!

Trước khi đọc tiếp, yêu cầu bạn đã có cài đặt wordpress trên hosting hoặc sử dụng localhost. MÌnh sẽ sử dụng hệ điều hành Ubuntu LTS 16.04, Varnish Cache 4.1 and WordPress 4.4.

1. Cài đặt Varnish

Nếu bạn chưa cài đặt Varnish, hãy cài đặt varnish trên VPS của bạn hoặc test với máy ảo vagrant nếu bạn muốn.

2. Cài plugin varnish

Sau khi cài đặt varnish, chúng ta sẽ chỉ dẫn cho wordpress cách xóa nội dung content đã cache khi bất cứ lúc nào bạn đăng hay sửa bài trong wordpress. Bạn cũng có thể có thể sử dụng cách plugin sau.

Trong bài này, chúng ta sử dụng Varnish HTTP Purge Plugin. Truy cập vào WordPress dashboard, nhấn vào Plugins > Add New và tìm plugin “Varnish HTTP purge”, rồi nhấn Install Now. Sau đó kích hoạt plugin.

3. Kích hoạt mod_rewrite

Để plugin Varnish HTTP Purge cũng có thể hoạt động, bạn cần kích hoạt mod_rewrite cho web server và càng phải có lập tùy biến permalinks trong wordpress, lưu ý không sử dụng mặc định URL trong WordPress. Trong trang quản trị WordPress, chọn mọi cấu trúc URL, ngoại trừ ‘Plain’.

Ở trường custom, nhập giá trị /%year%/%monthnum%/%post_id% , và nhấn ‘Save Changes’. Tại console, gõ:

 a2enmod rewrite  

4. Đổi apache port

Trước khi chúng ta cấu hình varnish cấp phép mọi traffix tới từ wordpress site, bạn phải đổi cổng port cho apache web server. Hãy đổi cổng 80 sang 8080.

 /etc/apache2/ports.conf  

Và các files trong thư mục /etc/apache2/sites-enabled/ .
Điều này sẽ đảm bảo, apache sử dụng port 8080 để chạy wordpress, và varnish nhận traffix sử dụng HTTP(s) với cổng 80 khi người sử dụng truy cập website.

5. Cấu hình varnish backend

Varnish sử dụng khái niệm backend, định nghĩa nội dung nhận từ nguồn nào nếu nội dung truy cập bởi người sử dụng không được cache. Trong TH này, chúng ta sẽ sử dụng cấu hình apache ở bước 4. Sửa lại /etc/varnish/default.vcl như dưới đây:

 backend default { .host = “127.0.0.1”; .port = “80”; }  

6. Kích hoạt

Khởi động lại varnish và apache. Sau khi restart, mọi traffix đến vào wordpress sẽ đều được thông qua Varnish, trước khi vào apache server. Mở cửa sổ lệnh và chạy dòng sau:

 sudo systemctl restart varnish.service sudo systemctl restart apache2.service  

7. Loại bỏ COOKIES

Loại bỏ cookie. Varnish không cache nội dung có kèm cookie hoặc header, responses có chứa Set-Cookie . WordPress thiết lập nhiều cookies , trong số đó một vài cookie cần được bảo mật an toàn. Sửa lại file /etc/varnish/default.vcl và thêm dòng sau vào hàm vcl_recv .

 #unsetting wordpress cookies sub vcl_rec{ .. set req.http.cookie = regsuball(req.http.cookie, "wp-settings-d+=[^;]+(; )?", ""); set req.http.cookie = regsuball(req.http.cookie, "wp-settings-time-d+=[^;]+(; )?", ""); set req.http.cookie = regsuball(req.http.cookie, "wordpress_test_cookie=[^;]+(; )?", ""); if (req.http.cookie == "") { unset req.http.cookie; } }  

8. Loại bỏ URLs

Hầu hết các ứng dụng web, có 1 vài URL không nên cache. Với WordPress, chúng ta sẽ loại bỏ cache ở trang admin & trang đăng nhập. Một lần nữa, sửa lại file /etc/varnish/default.vcl và thêm dòng sau đây trước phần xóa cookie ở bước trên.

 # exclude wordpress url if (req.url ~ "wp-admin|wp-login") { return (pass); }  

9. Kéo dài thời gian cache

Varnish sử dụng tham số max-age để thiết lập thời gian nhiều nhất nội dung được cache trong varnish, trước khi lấy nội dung mới từ backend. Mặc định giá trị này là 120 s, nếu không chỉ định tham số max-age. Bạn có thể tăng lên tới 1h, bằng phương pháp sửa lại file cấu dường như dưới đây:

 # extending caching time sub vcl_backend_response { if (beresp.ttl == 120s) { set beresp.ttl = 1h; } }  

10. Xóa cache

Khi nội dung trong wordpress được cập nhật, Varnish HTTP purge được sử lý và gọi đến Varnish để yêu cầu xóa nội dung từ cache mà bạn mới sửa đổi. Và kết quả , những lần truy cập tiếp theo nội dung cũ sẽ có update từ backend bởi varnish.

Để làm điều này, chúng ta sẽ thêm một đoạn code ở đầu hàm vcl_recv trong file /etc/varnish/default.vcl
Phần đầu tiên, sẽ liệt kê IPs cho phép truy cập.

 acl internal { "192.x.x.x"/24; xxx.xxx.xx.xx; } # Allowing which address can access cron.php or install.php, # add the following in acl.  

Tiếp đến, bạn sẽ sử lý purge nội dung cache từ varnish, thêm nội dung sau vào.

 #handling purge requsets sub vcl_recv{ ... if (req.method == "PURGE") { if (req.http.X-Purge-Method == "regex") { ban("req.url ~ " + req.url + " && req.http.host ~ " + req.http.host); return (synth(200, "Banned.")); } else { return (purge); } } }  

11. Bảo mật Purge HTTP

Ở bước trước, bạn đã học cách làm có thể xóa nội dung cache trong varnish thông qua http. Tuy nhiên, bất kỳ ai hiểu rằng URL này còn cũng có thể có thể can thiệp và sửa đổi dữ liệu cache trên website của bạn, bước này bạn sẽ cần bảo mật nó. Bằng cách giới hạn truy cập IP hoặc hostname.

Sau phần backend thêm dòng acl vào default.vcl. Xem thí dụ mẫu:

 acl purge { "localhost"; server ip address or hostname; } ... if (req.method == "PURGE") { if (client.ip !~ purge) { return (synth(405)); }  

12. Khởi động varnish

Trước khi mọi thay đổi của bạn được varnish cập nhật, bạn cần nạp lại cấu hình varnish server. Mở dòng lệnh và chạy:

 #reload varnish systemctl reload varnish.service  

13. Xóa cache

WordPress có plugin Varnish HTTP Purge giúp bạn đơn giản xóa nội dung varnish cache. Sau khi kích hoạt plugin, truy cập admin và nhấn nút ‘Purge Varnish Cache’ trên toolbar.

Nếu bạn sử dụng wp-cli plugin có hỗ trợ, lệnh purge cache.

 wp varnish purge  

Nếu bạn thấy bài viết này hữu ích, hãy chia sẻ với bạn bè bằng cách nhấn nút chia sẻ ở bên dưới. Theo dõi chúng tôi trên Twitter và Facebook

Bài viết Tăng tốc WordPress với varnish cache được tổng hợp và biên tập bởi: dinhthuanit.com. Mọi ý kiến đóng góp và phản hồi vui lòng gửi Liên Hệ cho dinhthuanit.com để điều chỉnh. dinhthuanit.com xin cảm ơn.

Bài Viết Liên Quan


Bài Viết Khác


Quảng cáo
Ads_ngang