Super Page Cache for Cloudflare – King of plugin cache

Trước đây mình từng có bài viết về Super Page Cache for Cloudflare, lúc này nó mang tên là WP CloudFlare Super Page, lúc đó thì mình thấy chưa đáng dùng, Cloudflare FREE thời điểm đó thiếu tính năng, phần lúc đó tác giả xử lý cũng chưa tốt

Theo thời gian, Cloudflare đã đổi cơ chế cache, họ tách thêm một phần gọi là Cache Rules, nó đã giúp cho việc sử dụng Clouflare Cache Level: Cache Everything một cách mượt mà, thực tế sử dụng thì mình thấy quá tuyệt vời, Super Page Cache for Cloudflare rất xứng đáng có 1 bài viết cho đầu năm 2023 =))

Bài này nói thật là quá dài, setting chằng chịt, tới chính mình đọc lại mà còn nhức hết cả đầu, có điều hiệu quả mang lại của nó rất xứng đáng với thời gian bỏ ra

Nó chỉ lâu ở lần setting đầu tiên, sau đó có tinh chỉnh gì, cũng chỉ vài setting nhỏ bên trong

Thông thường, nếu không có gì quá đặc biệt, chúng ta sẽ phân cache làm thành 3 tầng

  • Layer 0 (L0): plugin caching thông thường, có thể ví dụ như FlyingPress, WP-Rocket, Swift Performance ….trang web sẽ được chuyển về dạng tĩnh (html) lưu trên ổ cứng, L0 có thể kết hợp với L1 sử dụng Nginx để chạy trực tiếp (đây là cách trước đây mình hay dùng, tốc độ và chịu tải rất tốt, quản lý cũng rất đơn giản)
  • Layer 1 (L1): Web server (Apache/NGINX/OLS) thường các dịch vụ trả phí, giá đa phần trên $20/month mới có các gói này, có thể kể tới như LiteSpeed, NINGX SRCache, NGINX x-proxy, Runcloud, Kinsta, Shopify, Varnish … dạng này thường mình chẳng nhìn bao giờ vì mắc 
  • Layer 2 (L2): CDN, có thể kể tới Amazon Cloudfront, Cloudflare (+APO), Fastly …. L2 có thể gọi là bố đời, mẹ thiên hạ về tốc độ và chịu tải, hình dung thì các trang sau khi cache về dạng tĩnh (html) sẽ được chuyển tới nhiều cụm CDN khác nhau, khách ở khu vực nào thì sẽ lấy dữ liệu từ cụm CDN đó, nên rất hiếm đụng chạm gì tới server gốc, lý thuyết L2 có thể cân cả thế giới theo đúng nghĩa đen

Super Page Cache for Cloudflare sử dụng Cache Level: Cache Everything, có thể gọi là “tương tự với L2”, về bản chất nó khá tương đồng, khác biệt là ở lớp L2 thông thường, chỉ cần 1 khách vào web, nó sẽ tự cache trang đó, sau đó chuyển tới tất cả các cụm CDN trên toàn thế giới, còn Cache Level: Cache Everything dùng CDN FREE Cloudflare thì chỉ cache tại 1 server 1 lúc, kiểu nếu bạn ở VN, truy xuất vào bài viết này, thì người thứ 2 ở VN sẽ được load file cache, nhưng nếu người thứ 3 ở US vào, thì lúc này mới tạo cache tại server US, người thứ 4 ở US vào thì mới có cache ….. nó thua hình thức L2 thông thường 1 xíu, nhưng miễn phí mà thế thì quá tuyệt vời rồi, về khoản này thì tùy Cloudflare, vui vui họ đổi cơ chế, CDN FREE có thể được ở 5-10 cụm ở các châu lục thì lúc này Cache Level: Cache Everything có thể gọi là L2 hàng real luôn 😀

Về hình thức cache L2 trả phí thì cá nhân mình rất thích cách kết hợp với dịch vụ CDN của BunyCDN, chi phí rẻ hơn các dịch vụ khác rất nhiều, mỗi cái không hiểu sao chưa thấy ai viết plugin cache tích hợp sang BunyCDN

Cụ thể bạn có thể thấy thèng bibica.net khi dùng Super Page Cache for Cloudflare, TTFB ở tất cả các cụm server đều rất ổn từ lần truy cập thứ 2, đây là con số bạn không bao giờ có được nếu dùng các hình thức cache thông thường, không dùng thì ta chỉ có các con số như này thôi

So sánh với dịch vụ Cloudflare Pages làm trang backup dạng tĩnh là (static.bibica.net) thì tốc độ vẫn thua 😀 do thèng static dùng full 100% dịch vụ từ Cloudflare, tất cả các trang đều được tự đưa vào tất cả các POP, nếu bạn thích các con số xuống kịch trần như thế, có thể bật dùng Cloudflare Workers, được miễn phí 100.000 request mỗi ngày, khá đủ dùng cho các trang nhỏ

Kiểm tra qua dịch vụ monitor Uptimedoctor có thể thấy rõ là thời gian liên quan tới processing giảm xuống rõ rệt

Chỉnh sửa cấu hình Webinoly

Bài này mình cấu hình trên Webinoly, các nền tảng khác cũng tương tự, chú ý là cài đặt lần đầu tiên khá dài nhé 😛

Xóa Cache-Control “no-cache”; trên Webinoly

nano /etc/nginx/common/headers-html.conf

Xóa dòng add_header Cache-Control “no-cache”; ở cuối đi, Ctrl + O -> Enter -> Ctrl + X để save và thoát ra

Chạy tiếp dòng bên dưới để reload lại nginx, để thay đổi có hiệu lực

nginx -t
service nginx reload

Cũng chưa rõ vì sao các script dạng cài đặt webserver auto luôn để dòng này, phải bỏ đi, không là Cloudflare Cache Everything không chạy :((

Nếu bạn dùng CyberPanel, WPTangToc OLS, AaPanel …. chạy trên LiteSpeed/OpenLiteSpeed thì không cần làm bước này

Setting Cache Rules từ trang quản trị Cloudflare

2022-12-22_23-49-55

Truy cập vào Cache Rules -> Create new Cache Rule -> Edit Expression

2022-12-22_23-52-23

Chú ý thay thế bibica.net bằng domain của bạn ở các đoạn code bên dưới

Rule 1 ➜ Cache Bypass — WP Admin Paths, WooCommerce API, EDD API Endpoints

2022-12-22_23-59-46

Rule name (required): Cache Bypass — WP Admin Paths, WooCommerce API, EDD API Endpoints

Rule Expression: thêm dòng code bên dưới vào Use expression builder

(
  http.host eq "bibica.net" and
  (starts_with(http.request.uri.path, "/wp-admin") or starts_with(http.request.uri.path, "/wc-api/") or starts_with(http.request.uri.path, "/edd-api/"))
)

Cache status (required): Bypass cache

Xong xuôi thì ấn vào Deploy

Rule 2 ➜ Cache Bypass — XML, XSL & PHP Files

2022-12-23_0-07-56

Rule name (required): Cache Bypass — XML, XSL & PHP Files

Rule Expression: thêm dòng code bên dưới vào Use expression builder

(
  http.host eq "bibica.net" and
  (http.request.uri.path contains ".xsl" or http.request.uri.path contains ".xml" or http.request.uri.path contains ".php")
)

Cache status (required): Bypass cache

Xong xuôi thì ấn vào Deploy

Rule 3 ➜ Cache Bypass — Default Bypass Cookies

2022-12-23_0-23-25

Rule name (required): Cache Bypass — Default Bypass Cookies

Rule Expression: thêm dòng code bên dưới vào Use expression builder

(
  http.host eq "bibica.net" and
  (http.cookie contains "wordpress_logged_in_" or http.cookie contains "comment_" or http.cookie contains "woocommerce_" or http.cookie contains "wordpressuser_" or http.cookie contains "wordpresspass_" or http.cookie contains "wordpress_sec_" or http.cookie contains "yith_wcwl_products" or http.cookie contains "edd_items_in_cart" or http.cookie contains "it_exchange_session_" or http.cookie contains "comment_author" or http.cookie contains "dshack_level" or http.cookie contains "auth_" or http.cookie contains "noaffiliate_" or http.cookie contains "mp_session" or http.cookie contains "xf_" or http.cookie contains "mp_globalcart_") and
  not http.request.uri.path contains "."
)

Cache status (required): Bypass cache

Xong xuôi thì ấn vào Deploy

Rule 4 ➜ Cache Eligible Requests & Ignore Query Params from cacheKey

Rule name (required): Cache Eligible Requests & Ignore Query Params from cacheKey

Rule Expression: thêm dòng code bên dưới vào Use expression builder

(http.host eq "bibica.net" and not starts_with(http.request.uri.path, "/wp-admin") and not starts_with(http.request.uri.path, "/wp-json/") and not starts_with(http.request.uri.path, "/wc-api/") and not starts_with(http.request.uri.path, "/edd-api/") and not http.request.uri.path contains ".xsl" and not http.request.uri.path contains ".xml" and not http.request.uri.path contains ".php" and not http.cookie contains "wordpress_logged_in_" and http.cookie ne "comment_" and not http.cookie contains "woocommerce_" and not http.cookie contains "wordpressuser_" and not http.cookie contains "wordpresspass_" and not http.cookie contains "wordpress_sec_" and not http.cookie contains "yith_wcwl_products" and not http.cookie contains "edd_items_in_cart" and not http.cookie contains "it_exchange_session_" and not http.cookie contains "comment_author" and not http.cookie contains "dshack_level" and not http.cookie contains "auth_" and not http.cookie contains "noaffiliate_" and not http.cookie contains "mp_session" and not http.cookie contains "xf_" and not http.cookie contains "mp_globalcart_")

Cache status (required): Eligible for cache

Cache key (optional):

Bật Cache deception armor
Bật Ignore query string order

Xong xuôi thì ấn vào Deploy

Chú ý là theo hướng dẫn gốc của tác giả tại Github, phải bật cả Ignore query string, có điều nếu bật cái này, phần Search của trang sẽ không chạy 😀 nên phải tắt Ignore query string đi

2022-12-23_0-31-08

Làm xong ta sẽ có Cache Rules gồm 4 rules có thứ tự như hình, và đang được bật 😀

Cài đặt và cấu hình Super Page Cache for Cloudflare

Download và setup như 1 plugin thông thường

Điền EmailGlobal API Key sau đó update, nó sẽ ra phần domain, chọn domain rồi ấn Update 

Tab Cache thì bạn chỉ cần phóng to ảnh lên, sau đó chỉnh theo y chang là được 😀

Purge whole cache: bật chọn
Tùy chọn này sẽ xóa toàn bộ cache khi cập nhập hay viết bài mới, lý thuyết là chỉ cần xóa cache bài đó và các bài có liên quan là đủ (Purge cache for related pages only), có điều để chắc chắn là khi sửa hay xóa bài viết, tất cả các chỗ trên trang đều phải hiện ra đúng, nên mình bật thêm tùy chọn thứ 2 là Purge whole cache
 
Automatically purge single post cache when a new comment is inserted into the database or when a comment is approved or deleted: bật chọn
Khi có comment mới hay xóa comment cũ, sẽ tự xóa cache của bài viết đó
 
Automatically purge the cache when the upgrader process is complete: bật chọn
Cái này mình không chắc hiểu đúng là khi thêm, hay xóa plugin, nâng cấp Wordpress …. nó sẽ tự xóa cache, chọn YES cho chắc kèo thôi 😛
 
Purge HTML pages only: bật chọn
Đây là 1 tính năng rất hay, khi nó chỉ xóa cache trang tĩnh cache dạng html, chứ không xóa cache các file css, js, hình ảnh ….
Bạn có thể ấn thêm vào “Show cached HTML pages list” để nhìn các trang đã được cache
 
Add browser caching rules for static assets: chọn NO như mặc định
Khi cache thì mọi thứ liên quan tới trình duyệt của khách mình đều không cache, nhằm tránh chuyện bạn nâng cấp thay đổi gì trên site, mà ở phía khách vẫn lưu lại cache cũ
 
Disable cache purging using queue: Bật chọn hoặc không
Tùy chọn mặc định là tắt: sau khi bạn ấn xóa cache, 10s sau nó mới xóa cache trên Cloudflare, mình đoán là để tránh tình trạng VPS phải xóa quá nhiều thứ cùng lúc (OPcache, object cache …), khiến server quá tải 
Thực sự thích ý tưởng này, theo mình hiểu là khi bạn ấn xóa cache, nó sẽ xóa OPcache, object cache trước, sau đó mới xóa cache Cloudflare
Cá nhân thì mình bận chọn, nghĩa là xóa cache ngay lập tức sau khi ấn xóa, phần vì trang này ít bài, phần vì mình cũng không dùng thêm các hình thức cache khác
 
Bạn hoàn toàn có thể bật YES ở tùy chọn Cloudflare Workers để cache, dùng nó thì bạn có thể bỏ qua bước set 4 cái Cache Rules ở trên, có điều chỉ được 100.000 request mỗi ngày, trang nào traffic lớn sẽ bị thiếu, dùng quá thêm sẽ phải trả tiền, hoặc mất tác dụng, nên mình cũng hạn chế dùng tới option này
 
Super Page Cache for Cloudflare cũng có 1 option phụ là Fallback page cache, giúp tạo thêm 1 lớp cache thông thường lưu xuống ổ cứng, trong trường hợp vì lý do nào đó, Cache Everything không (hoặc chưa tạo) chạy thì có 1 lớp L0 cache, có điều mình thấy râu ria quá, nên không bật, để tắt như mặc định

Phần Advanced: Preloader giúp preload lại các bài viết là 1 tính năng mọi plugin cache đều cần phải có, mỗi cái không hiểu sao trên Super Page Cache for Cloudflare nó chạy khá chậm và không preload đủ trang, chuyện preload chậm mình nghĩ là để giảm tải cho các hosting cấu hình thấp, cũng có thể lý giải được, nhưng preload không hết các trang thì nghe vô lý quá 😀

Mở thử file wp-cloudflare-super-page-cache.php ra nhìn, dòng 27 thấy define(‘SWCFPC_PRELOADER_MAX_POST_NUMBER', 50);

Trông như con số 50 này là tác giả quy định chỉ preload 50 trang thôi thì phải? không chắc lắm là tại sao, nhưng sửa tăng cao lên, tầm 5000 😀 thì thấy preload đủ các trang của thèng bibica.net

define('SWCFPC_PRELOADER_MAX_POST_NUMBER', 5000);
define('SWCFPC_CURL_TIMEOUT', 100);

Tiện sửa SWCFPC_CURL_TIMEOUT cho lên 100 luôn cho chắc kèo, đỡ preload thiếu 😀

Automatically purge the object cache when Cloudflare cache is purged: trong trường hợp bạn có dùng thêm 1 số hình thức object cache khác như Redis Object Cache thì bật tùy chọn này lên

Super Page Cache for Cloudflare là 1 trong rất hiếm plugin mà mình thấy có thể quản lý tốt cả Redis Object Cache, khi chạy không có lỗi, nhiều plugin khác xóa cache từ Object Cache không tốt

Mình có nói ở đầu bài cách Cloudflare CDN miễn phí hoạt động, khi IP ở khu vực nào vào site, thì nó mới cache xuống POP ở gần đó nhất, chứ không tự gửi file cache này tới mọi cụm POP trên toàn thế giới như ở bản trả phí, thế nên chuyện preload trước ở đây, nó chỉ tạo cache xuống nơi gần nhất, cụ thể thèng bibica.net đang dùng VPS tại Sing, thế nên hình thức preload tạo cache này chỉ có tại cụm Singapore, truy cập ở Châu Âu, Mỹ …. đều không tận dụng được tốc độ ở lần đầu truy cập

Phần Third Party để mặc định

Phần Other, kéo xuống dưới sẽ thấy tùy chọn “Remove Cache Buster Query Parameter“, chọn YES, các option khác để mặc định

4 cái rule trên Cloudflare set ở đầu bài là để dùng cho cái tùy chọn này, nhờ thế nó sẽ không còn các link “?swcfpc=1” sau đường dẫn như ngày xưa nữa, rất sạch sẽ

Nginx Settings

Nếu bạn dùng CyberPanel, WPTangToc OLS, AaPanel …. chạy trên LiteSpeed/OpenLiteSpeed thì không cần làm bước này, khởi động lại OpenLiteSpeed để các rule tự cập nhập là được

Sau khi cấu hình Super Page Cache for Cloudflare xong bạn quay lại tab Cache

Bên dưới CACHE BEHAVIOR SETTINGS sẽ thấy chữ on thia page, ấn vào nó sẽ ra phần nội dung cần sửa của Nginx, tùy bạn config tab Cache làm sao mà nội dung file config khác nhau

Browser caching rules
Open the configuration file of your domain and add the following rules:

    location ~* \.(xml|xsl)$ { add_header Cache-Control "no-cache, no-store, must-revalidate, max-age=0"; expires -1; }
location /robots.txt { add_header Cache-Control "no-cache, no-store, must-revalidate, max-age=0"; expires -1; }
location /wp-cron.php { add_header Cache-Control "no-cache, no-store, must-revalidate, max-age=0"; expires -1; }
location = /wp-content/wp-cloudflare-super-page-cache/bibica.net/debug.log { access_log off; deny all; }
                        
Save and restart Nginx.

Của mình là nội dung như thế, trên Webinoly thì chép vào file locations.conf

nano /etc/nginx/common/locations.conf

Chép đoạn code bên dưới vào cuối 

location ~* \.(xml|xsl)$ { add_header Cache-Control "no-cache, no-store, must-revalidate, max-age=0"; expires -1; }
location /robots.txt { add_header Cache-Control "no-cache, no-store, must-revalidate, max-age=0"; expires -1; }
location /wp-cron.php { add_header Cache-Control "no-cache, no-store, must-revalidate, max-age=0"; expires -1; }
location = /wp-content/wp-cloudflare-super-page-cache/bibica.net/debug.log { access_log off; deny all; }

Ctrl + O -> Enter -> Ctrl + X để save và thoát ra

Chạy tiếp dòng bên dưới để reload lại nginx, để thay đổi có hiệu lực

nginx -t
service nginx reload

Khi bạn bật chạy Super Page Cache for Cloudflare thì nó sẽ tự tạo 1 rule mới trong Page Rules của Cloudflare, Cache Level: Cache Everything

Về lý thuyết, nếu bạn cấu hình tương tự như các bước mình ghi ở trên, ta sẽ có 1 trang vận hành với các rule như sau

  1. Tự xóa tất cả các cache bài viết dạng (html) khi trang update, cập nhập plugin, theme …
  2. Tự xóa tất cả các cache bài viết dạng (html) khi cập nhập, thêm, sửa, xóa bài viết mới
  3. Khi thêm comment, xóa comment tại 1 bài viết, thì sẽ tự xóa cache bài viết đó (thực tế khi kiểm tra lại thì khi xóa 1 comment, có vẻ như nó xóa tất cả cache ở mọi trang luôn, chứ không chỉ xóa cache mỗi bài viết đó, trang nào mà tương tác comment liên tục thì vụ này hơi chua 😀)
  4. Bất cứ khi nào xóa cache, thì tính năng preload sẽ tự tạo mới các trang theo đường dẫn tại sitemap.xml (hoặc tự lấy link từ trang chủ)
  5. Các file tĩnh dạng js, css, images sẽ không tự xóa
  6. Trang quản trị, thành viên sẽ không cache
  7. Sau khi 1 người comment, trang đó sẽ chuyển về dạng “no-cache” nên khách khác vào sẽ không bị dính cache của khách cũ

Trong trường hợp chỉnh sửa theme, hay các thứ liên quan tới các file js,css … để xóa cache thì ấn vào tùy chọn Force purge everything ở Cache Actions

LỖI hay là TÍNH NĂNG ?

Vấn đề là do thói quen sử dụng, mình biết tới internet từ lúc nó vừa có mặt tại Việt Nam, thời dial up, nên mình luôn có thói quen bật …. nhiều tab 1 lúc, để nó load hết hình ảnh xong mới đọc từ từ từng trang 😛

Bởi thế mình rất ghét các hình thức như Lazyload, vì khi kéo chuột xuống nó mới bắt đầu load hình ảnh, mạng chậm tự dưng thấy cái trang bị lủng 1 lỗ cọc lắm

Sau khi sử dụng Super Page Cache for Cloudflare kết hợp với Cloudflare CDN, không chắc do tác dụng của ai, nhưng giờ nó lại chạy trên hình thức Preflight, giải thích hơi lằng nhằng, nhưng mình nghĩ cái này là “tính năng” của Cloudflare 😀

Kết quả là giờ các trang tại bibica.net, nó chỉ load các phần hiển thị trên màn hình, còn lại, bạn kéo chuột tới đâu thì nó mới load data tới đó, khá tương đồng với hình thức Lazyload

Ưu điểm của chuyện này thì tất nhiên là cực kì rõ rệt ở các thiết bị màn hình nhỏ như điện thoại, truy cập trên điện thoại vào bibica.net thì gần như tức thời, không thấy bất cứ độ trễ nào, kể cả ở bài viết có hình ảnh nhiều kinh hoàng như bài này

Sử dụng thì tạm mình cũng không thấy vấn đề gì quá khó chịu, vì mạng giờ nhanh, hình ảnh hiển thị ra kịp 😀 có điều đây không phải là thứ mình mong muốn, cảm giác như bị lạm quyền ấy 😛

Cách thức hoạt động?

Mình thử dùng 2-3 trình duyệt, tự comment vài lần, sau đó xóa thử từng comment đi, thì thấy 2-3 trình duyệt đều hiện ra đồng thời, F5 1 phát là có tác dụng, không bị tình trạng chậm xóa cache như trước đây, chạy rất thích 😀 và nhờ Cloudflare đã cho phép dùng các Cache Rules riêng, nên giờ không lo nó cache nhầm vào quản trị hay hiện swcfpc=1 ở link, bản mới này đã khắc phụ được hết 

Tính năng preload thì chạy hơi chậm, đúng ra tác giả nên cho 1 option nhỏ, kiểu chọn preload 10-20 hay 50 bài 1 lần, khách sẽ tùy chọn theo cấu hình server, FlyingPress preload 180 trang của thèng bibica.net tầm 1-2 phút là xong, Super Page Cache for Cloudflare chạy lâu hẳn, tự chạy gần 7 phút mới xong

Hiện tại đang khá hài lòng 😀 sau khi cài vào thì mình chưa thấy lỗi gì đáng để phàn nàn, nếu thấy sẽ bổ xung sau 😀 

Bổ xung Cache Warmer

Để bổ xung cho tính năng cache toàn trang bằng  Cache Level: Cache Everything, bạn có thể vào Oracle tạo 1 con VPS miễn phí tại US, sau đó cài đặt các tool Cache Warmer để có thêm 1 vị trí từ US vào trang, lúc này bạn sẽ có mặc định 1 vị trí cache từ hosting gốc tại Singapore + 1 vị trí cache từ US, tất cả đều miễn phí và chạy tự động

Lúc này, thường sau khoảng 2-3 phút là cache sẽ được tự động tạo đầy đủ, gần như không sót 😀 do có tới 2-4 lần preload 😛 

Dùng thêm VPS khác để preload nó cũng giảm tải cho VPS chính, vì đỡ phải vừa chạy, vừa tự preload như thông thường

Lúc này thì kể cả là truy cập lần đầu tiên vào site, khách từ US (cụ thể là cụm ở San Francisco) cũng đã được hưởng lợi từ con VPS Oracle US cache trước, hơi khó hiểu là cụm ở London cũng được cache, chắc tình cờ trong 3 phút mình xóa cache, có 1 truy cập từ Anh vào nên bài test ở keyCDN mới hiện ra như thế

Còn tất nhiên, sau khi truy cập đầu tiên, từ lần 2 thì các khách ở nước đó đều đã được cache, nên tốc độ giảm xuống đồng loạt là rất dễ hiểu

Tỷ lệ Percent Cached cao ngất ngưỡng, thậm chí tới 99%

Bạn nào có VPS miễn phí để không, ở nhiều khu vực khách nhau, có thể dùng cách này để tự tạo preload trước cho hình thức Cache Level: Cache Everything 😀

Super Page Cache For Cloudflare – Siêu Phẩm
Super Page Cache For Cloudflare – Siêu Phẩm

Sau khi dùng Super Page Cache for Cloudflare thay cho FlyingPress khoảng 2 tuần, dùng thêm cả Redis Object Cache, trải nghiệm thực tế sử dụng rất hài lòng, trừ vụ thi thoảng nó preload không đủ trang (có thể xử lý bằng cách dùng các cache preload bổ xung), load trang qua hình thức Preflight (như đã nói ở trên), còn lại vận hành mọi thứ trơn tru mượt mà, cache xóa tốt, không bị sót, rất ấn tượng

Khoảng 2 tuần nay, để thử nghiệm mình hay tự xóa cache, cập nhập bài viết, thậm chí move sang nhiều hosting khác nhau, chạy trên nhiều nền tảng khác như Nginx, LiteSpeed, OpenLiteSpeed ….. mà tỷ lệ cache  vẫn > 80%, khoản tốc độ thì mình nghĩ không cần bàn, load trực tiếp từ server của Cloudflare thì bố đời rồi, rất nhanh 😀

Với FlyingPress mình đã rất hài lòng, nhưng với Super Page Cache for Cloudflare với hình thức cache L2 thì chỉ có thể nói là không thể bị đánh bại 😀


Related Posts

  1. WP CloudFlare Super Page
  2. Cloudflare CDN, DNS và Cache - UPDATE 2022
  3. Cache Everything Cloudflare đang nâng cấp?
  4. SuperSonic và CloudFlare TTFB ~3x ms
  5. Tạm ngừng sử dụng các dịch vụ từ Cloudflare

26 thoughts on “Super Page Cache for Cloudflare – King of plugin cache”

  1. Bài viết rất chi tiết, cám ơn bạn hiền nhiều! Mình xài Openlitespeed + Super Page Cache For Cloudflare thì thấy khi mình truy cập dạng khách đọc truyện cực kỳ nhanh hơn hẳn cặp đôi Openlitespeed + Litespeedcache. Nhưng khi mình login dạng QTV và các thành viên login vào post truyện thì cặp OPS + SPCFC không bằng Litespeed cache. Xin hỏi bạn có cách nào khắc phục được điểm này không?
    Hay là chơi kết hợp cả hai: OPS + LScache + SPCFC? Mong được hồi âm ạ! Vì site mình là site đọc truyện của WP Manga!

    Reply
    • Lý thuyết các plugin cache phần quản trị sẽ không xử lý, nên cơ bản mọi plugin cache, phần quản trị sẽ có tốc độ như nhau, LScache dùng mà thấy nhanh hơn ở quản trị thì có khả năng đang bật cache phần quản trị?

      Trường hợp post truyện kiểu 5-10 chap, mỗi chap post 1 bài, sau đó ấn cập nhập là Super Page Cache for Cloudflare sẽ liên tục xóa, tạo cache mới, trong trường hợp trang có quá nhiều post, nó sẽ rất nặng, VPS đa phần sẽ load gần max công xuất

      Super Page Cache for Cloudflare bên trong nó cũng có phần tự xóa cache của LScache
      OPS + LScache + SPCFC lý thuyết là có thể vận hành được, SPCFC cho phần user ngoài, LScache cho phần quản trị, thử cài xem thế nào?

      Reply
      • Cám ơn bạn hiền nhiều! Mình sẽ test coi thế nào! Chúc bạn nhiều sức khỏe và thành công trong mọi lĩnh vực nhé!

        Reply
        • Cả hai kết hợp lại rất là lag bạn hiền ơi! Tắt Litespeed đi thì ổn định lại!

          Reply
          • Trong trường hợp này thì thử kết hợp Super Page Cache for Cloudflare với Redis xem phần quản trị có tối ưu hơn không?

          • Mình hiện chạy kết hợp như sau: OPS + SPCFC + Oject Cache Pro + Perfmatters.

            Khi không đăng nhập thì đúng là load tốc độ bàn thờ luôn.

            Khi đăng nhập rồi thì nó lag lag sao cũng khó hiểu lắm, bên cạnh đó mình tìm được một plugin cache warm xài ổn áp lắm, đó là: Advanced Cache Warmer, đã chạy thử và rất ok

            Mình chạy trang truyện này trên Dedicated Server luôn, hiện rất dư RAM (192GB) và Disk (1TB SSD), 16 core 2,3 GHz. Mong cao kiến từ bạn để mình tối ưu thêm ạ!

            Trang truyện của mình đây ạ: hoinhieuchu.com

          • Hmm, theo như thế bạn có thể thử như sau

            1. Sử dụng Super Page Cache for Cloudflare + Redis để cache cho user và admin
            2. Tắt tính năng preload mặc định từ Super Page Cache for Cloudflare
            3. Sử dụng Cache Warmer ngoài theo như bài này (https://bibica.net/sitemap-cache-warmer-preload-qua-sitemap-xml/)

            Mình không khuyến khích dùng plugin Cache Warmer trên server gốc lắm, tại nó ăn tài nguyên của server gốc, tạo 1 con VPS miễn phí, sau đó setup như trong bài lý thuyết ổn hơn

            Có điều trong trường hợp thực tế, trang tương tác nhiều, chuyện preload trước nó không có nhiều ý nghĩa, tại người đầu tiên vào, người thứ 2 đã có cache rồi, thành ra chuyện tự tạo preload cache liên tục, nó chỉ làm quá tải server thôi

            Bạn có thể thử, chỉ làm bước 1 và 2 theo như đề xuất mình nói ở trên, server sẽ khỏe hơn và hiệu quả mang lại vẫn rất tốt

          • Ok bạn! Để nó chạy coi thế nào! Nếu không được nữa thì mình request bạn vào xem thế nào rồi mình mời vài ly bia như bài viết bên kia 🤣

          • Ổn định lại rồi bạn. Nhưng mà mình vẫn muốn nhờ chuyên gia vào xem như thế nào ạ? Cho mình xin cách liên lạc với bạn ạ!

  2. Anh cho e hỏi tí ạ, e cấu hình test cf thấy mọi thứ đều working. Refresh thì xem network file .html có nghĩa file tĩnh thì cf-cache-status HIT nhưng sao file img, css, js này nọ trạng thái vẫn là MISS ko hiểu lý do sao. Nhờ e thông não dùm e chỗ này với đc ko ạ.

    Reply
    • Trên Super Page Cache for Cloudflare chọn Force purge everything, để xóa hoàn toàn tất cả cache cũ

      Mở trình duyệt mới, không login tài khoản quản trị, clear cache rồi Ctrl + F5 lại 1-2 xem thế nào

      Reply
      • dạ thank a ổn rồi anh ạ, anh cho e hỏi luôn cái plugin này a test thử trên woo chưa a, e thấy mấy trạng thái add to cart remove cart nó lưu cache, xóa cart rồi mà vẫn còn lưu lại. A có cách nào giải quyết mấy chỗ này ko cho e xin ít kinh nghiệm ạ. Thank anh.

        Reply
        • Super Page Cache for Cloudflare họ sử dụng Cloudflare từ lúc khách vào trang, load toàn data tĩnh, nên quản lý các thứ liên quan tới shop gần như là không có hiệu quả, với mình cũng thấy nó không cần thiết

          Shop thì mình thấy cứ dùng cơ bản FlyingPress là quá đủ rồi (https://bibica.net/flyingpress-plugin-cache-hang-dau/)

          Reply
          • dạ thank a, giá thằng này hơi chát nên e dùng qua wp-rocket thấy ổn rồi. Ko hiểu sao thấy bài review của a về litespeed cache mượt hơn nhưng e vẫn thấy rocket nó ổn hơn. Litespeed vọc cũng khá nhiều rồi mà cảm giác nó vẫn chậm chạp hơn rocket 😐

        • WP Rocket và Rocket-Nginx giai đoạn trước mình cũng có dùng, hiệu quả tuyệt vời, tùy biến Cookies, User Agent(s), Query String(s) … rất tốt (https://bibica.net/wp-rocket-va-rocket-nginx/)
          FlyingPress mình thích là vì cơ chế precache của nó rất nhanh, tác giả cũng support mạnh trên rất nhiều addon, plugin khác

          Litespeed cache mình chỉ đánh giá cao ở khoản chịu tải khỏe (x3-x5 so với các cơ chế L0 khác), có điều trên blog hay shop sự hiệu quả của nó với mình không có ý nghĩa, gần như chỉ để làm màu

          Nếu dùng WP Rocket mà thấy hiệu quả ổn thì nền dùng, cũng chẳng cần thiết đổi sang các plugin khác quảng cáo tốt hay nhanh hơn làm gì cho mệt đầu 😀

          Reply
          • Thank anh nhiều, litespeed cache trên wptangtoc thấy nhiều bạn đánh giá cao về hiệu năng, tốc độ load … nhưng e trải nghiệm thực tế thì nói chung tạm chứ ko ăn thua so với mấy thằng này. Nên thôi dùng rocket này là đủ cho một cuộc tình rồi. Thank anh nhé. Document của rocket e cũng khá ấn tượng. Hỗ trợ full code thêm thắt này nọ nếu cần thiết.

  3. Chào anh, bài viết hay quá, anh cho e hỏi này khi có product mới hoặc có post mới thì nó có automatic clear cache homepage hoặc những gì liên quan đến post hoặc product mới, mà vẫn giữ nguyên các cached post hoặc product cũ ko anh nhỉ.

    Reply
    • Super Page Cache For Cloudflare hoạt động mặc định là như thế, tùy chọn “Purge cache for related pages only”, có bài viết mới nó chỉ xóa các bài viết liên quan tới bài đó 😀

      Điểm hay của Super Page Cache For Cloudflare là nó có 1 option nhỏ “Purge HTML pages only”, chỉ xóa các trang dạng html, còn hình ảnh, file css, js sẽ không xóa, nên kể cả có xóa hết tất cả các cache, cũng load lại nhanh lắm

      Reply
      • Dạ okie anh trai, e clear rồi. Hay quá anh ạ, mấy bài viết của anh toàn mấy bài chất lượng. E cảm ơn a nhiều.

        Reply
      • Anh cho e hỏi thêm chút chỗ này nữa với ạ:
        Em thấy file cache tạm đuôi tmp nó lưu trong folder cached_html_pages
        Khi web nhỏ hoặc ít posts ít products sẽ ko sao, khi web nhiều posts hơn hoặc products hơn thì thư mục này nó phình to dần, có cách nào chia lại nó theo folder nhỏ kiểu random folder nhỏ để chứa ko a nhỉ, hoặc có giải pháp gì khác ko ạ. Thank a

        Reply
        • Tác giả họ tính toán tối ưu rồi viết ra, end user down về dùng là được rồi mà, tự làm phức tạp vấn đề làm gì 😀

          Thư mục cached_html_pages chứa cái link dạng sitemap, lúc nào preload thì nó chạy 1 tẹo, data nó dạng text nội dung chỉ là cái link kiểu https://bibica.net/super-page-cache-for-cloudflare-sieu-pham/

          Mà bình thường Cloudflare chạy ở tầng ngoài cùng, user có vào tới server đâu mà lo xa thế

          Dùng cache thì chủ yếu xem vấn đề tính năng, kiểu nếu là shop thì xem giá cả, nội dung khi thay đổi, có tự clear mới không, hay vẫn đang dùng giá trị cũ là được

          Reply
          • Dạ ko anh, ý e hỏi là để sau này restore backup source á anh, cho dễ dàng hơn.

        • Nói chung là không hiểu ý tưởng lắm 😀 restore hay backup thì liên quan gì chuyện các thư mục hay file trên server đâu ta?

          Reply
  4. chào anh, em dùng centos 7 , dùng script cài đặt của WPTANGTOC
    anh cho em hỏi thăm là khi em dùng lệnh trên thì nó tạo ra 1 file location.conf nhưng thêm code vào thì save không được .
    Với lại khi dùng Plugin này của Cloudflare thì có cần huỷ kích hoạt plugin LiteSpeed không ?

    Reply
    • Super Page Cache For Cloudflare khi chạy trên WPTANGTOC, dùng openlitespeed, nó chỉ sửa file .htaccess ở thư mục root của Wordpress, na ná như dòng code dưới
      =======================
      # BEGIN WP Cloudflare Super Page Cache
      …………….
      # END WP Cloudflare Super Page Cache
      ====================
      Setting Super Page Cache For Cloudflare như bài xong thì khởi động lại Openlitespeed ở menu 7 trên WPTăngtốc lại là được

      Dùng Super Page Cache For Cloudflare thì không cần dùng thêm plugin cache nào khác làm gì, tại Cloudflare nó ở tầng ngoài cùng, xử lý hết cả rồi

      Reply

Leave a Comment