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ủ » Thủ thuật » Cache AJAX GET với Cloudflare và Varnish

Cache AJAX GET với Cloudflare và Varnish

Chủ Nhật, 30/09/2018 by Hoàng Quách

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

Các yêu cầu AJAX thường được sử dụng để cung cấp nội dung động trên các trang WordPress và bộ đệm bỏ qua. Bạn muốn Cache AJAX với Varnish để vượt qua PHP và MySQL để xử lý AJAX bằng cách lưu trữ bộ đệm trong Varnish. Chắc chắn bạn sẽ cần hiệu suất tối đa, tôi cũng đã thử nghiệm với Cloudflare page caching cho WordPress. Trong bài viết này, mình sẽ hướng dẫn các bạn lưu trữ các yêu cầu AJAX GET từ WordPress trên Cloudflare để có thời gian tải nhanh nhất.

Giả sử bạn đang sử dụng Varnish 4 và có tài khoản Cloudflare miễn phí.

Trước và sau thử nghiệm

Kết quả trước cho thấy thời gian tải 307 ms đến California từ Hà Lan.

Kết quả sau cho thấy thời gian tải 3 ms đến California từ Hà Lan sau khi sử dụng bộ nhớ cache trên trang Cloudflare

Một cải thiện đáng kể từ 307 ms xuống 3 ms. Đó là khoảng 1% thời gian tải ban đầu cho plugin WordPress popular posts.

Cache AJAX GET với Cloudflare và Varnish

Hãy xem các tiêu đề của AJAX để xem tại sao Cloudflare không lưu chúng vào bộ nhớ cache bằng cURL.

curl -I "https://guides.wp-bullet.com/wp-admin/admin-ajax.php?action=wpp_get_popular&id=3"

Expires và Cache-Control headers cho biết Cloudflare không cache URL này. Bạn có thể thấy điều này trong phần CF-Cache-Status: MISS header.

root@htpcguides:~# HTTP/1.1 200 OK
Date: Fri, 13 Jan 2017 18:59:53 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Set-Cookie: __cfduid=d6303005caebe1f2b9037a66ba01d211b1484333992; expires=Sat, 13-Jan-18 18:59:52 GMT; path=/; domain=.htpcguides.com; HttpOnly
Pragma: no-cache
X-Robots-Tag: noindex
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Vary: Accept-Encoding
X-Varnish: 1087020866
Via: 1.1 varnish-v4
Access-Control-Allow-Origin: https://guides.wp-bullet.com
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Cache: HIT
CF-Cache-Status: MISS
Server: cloudflare-nginx
CF-RAY: 320b167eaaee0c5f-AMS

Chúng ta có thể sử lý với header này bằng Varnish 4, bằng cách sửa đổi tệp vcl sudo nano /etc/varnish/default.vcl.

Thêm đoạn mã này vào vcl_deliver để xóa các header vi phạm và thêm header Cache-Control phù hợp để Cloudflare sẽ lưu lại request này.

sub vcl_deliver {
    if ( req.url ~ "\?action=wpp_get_popular" && !req.http.cookie ~ "wordpress_logged_in" ) {
        # Remove headers preventing Cloudflare cache
        unset resp.http.Cache-Control;
        unset resp.http.Expires;
        unset resp.http.Pragma;
        unset resp.http.ETag;
        # Cache request in browser for 1 day (in seconds)
        set resp.http.Cache-Control = "max-age=259200";
    }
}

Bạn cần kiểm tra cú pháp vcl trước khi áp dụng: varnishd -C -f /etc/varnish/default.vcl.

Nếu không có lỗi, bạn có thể tải lại Varnish sudo service varnish reload

Tiếp theo, bạn sẽ cần xác minh phần header này có đang hoạt động không.

Kiểm tra ajax có cache?

Sử dụng lệnh cURL như trên, chúng ta có thể truy vấn một yêu cầu AJAX GET

curl -I "https://guides.wp-bullet.com/wp-admin/admin-ajax.php?action=wpp_get_popular&id=3"

Bạn có thể thấy các header đã biến mất và đã được thay thế bằng header Cache-Control đúng nghĩa. Lưu ý: sẽ có thêm header CF-Cache-Status: HIT.

HTTP/1.1 200 OK
Date: Sat, 14 Jan 2017 10:34:52 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Set-Cookie: __cfduid=d315ec598c4f6ca083628abcc3bef0cdf1484390092; expires=Sun, 14-Jan-18 10:34:52 GMT; path=/; domain=.wp-bullet.com; HttpOnly
X-Robots-Tag: noindex
Vary: Accept-Encoding
X-Varnish: 135206
Via: 1.1 varnish-v4
Cache-Control: public, max-age=2678400
Access-Control-Allow-Origin: http://guides.wp-bullet.com
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
X-Cache: MISS
CF-Cache-Status: HIT
Expires: Tue, 14 Feb 2017 10:34:52 GMT
Server: cloudflare-nginx
CF-RAY: 3210701dead83ce9-CPH

Tuy nhiên, Nó sẽ không nhanh hơn như cache requests động trên một máy chủ CDN giống như cloudflare nhé.

Để nhận được bài viết mới vui lòng đăng ký kênh kiến thức WordPress từ A-Z ở Form bên dưới. Bạn cũng có thể nhận được sự trợ giúp trên Twitter và Facebook

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

Chuyên mục: Thủ thuật Tìm kiếm: CloudFlare, 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.