Hoàng Web

Thiết Kế Website WordPress

  • Kho giao diện
  • Dịch Vụ
    • Thiết kế web giá rẻ
    • Thiết kế website WordPress
    • Hosting Miễn Phí 100GB
    • Tích hợp thanh toán MoMo, ViettelPay, Vietcombank, MB..
    • Tối ưu Google PageSpeed
    • Sửa lỗi nâng cấp website
    • Viết plugin WordPress
    • Code Tool theo yêu cầu
  • Bảng giá
  • Quy trình làm việc
  • Giới thiệu
  • Liên Lạc
Trang chủ » Wordpress » Tăng tốc WordPress với varnish cache

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

Thứ Tư, 04/04/2018 by Hoàng Quách

Nội dung

  • 1 1. Cài đặt Varnish
  • 2 2. Cài plugin varnish
  • 3 3. Kích hoạt mod_rewrite
  • 4 4. Đổi apache port
  • 5 5. Cấu hình varnish backend
  • 6 6. Kích hoạt
  • 7 7. Loại bỏ COOKIES
  • 8 8. Loại bỏ URLs
  • 9 9. Kéo dài thời gian cache
  • 10 10. Xóa cache
  • 11 11. Bảo mật Purge HTTP
  • 12 12. Khởi động varnish
  • 13 13. Xóa cache
  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Ở bài trước mình có hướng 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 về varnish cache, một trong những phần mềm cache tốt nhất hiện nay. Bạn sẽ nắm được từng 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ó 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ó thể hoạt động, bạn cần kích hoạt mod_rewrite cho web server và cần thiết 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 cho phép mọi traffix đến từ wordpress site, bạn cần đổ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 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 dùng chưa đượ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ó một 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 tối đa 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 cách sửa lại file cấu hình 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 biết được URL này 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 aclvào default.vcl. Xem ví 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 dễ dàng 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ích bài viết này, hãy ủng hộ chúng tôi bằng cách đăng ký nhận bài viết mới ở bên dưới và đừng quên chia sẻ kiến thức này với bạn bè của bạn nhé. Bạn cũng có thể theo dõi blog này trên Twitter và Facebook

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Chuyên mục: Wordpress Tìm kiếm: cache, varnish

Tôi giúp gì cho bạn?

HOÀNG WEB

Địa chỉ: Tây Sơn, Phường Quang Trung, Quận Đống Đa, Hà Nội

Hotline: 0987 342 124 – 0868 292 303 (8h:00 – 21h:00)

Email: [email protected]

Website: www.hoangweb.com

KẾT NỐI VỚI TÔI

  • Facebook
  • GitHub
  • YouTube

SẢN PHẨM

  • Plugin Thanh Toán Quét Mã QR Code Tự Động
  • WP2Speed – Tối ưu Google Speed
  • 23WebHost – Hosting Miễn Phí 100GB

LIÊN KẾT

  • Có nên thuê thiết kế website giá rẻ?
  • Hướng dẫn thanh toán
  • Chính sách hoàn tiền
  • Trung tâm hỗ trợ

Copyright © 2023 | All rights reserved | HOANG WEB
Mọi hình thức sao chép nội dung trên website này mà chưa được sự đồng ý đều là trái phép.