Qua cập nhập 1 số update hệ thống cho thèng bibica.net, tiện mồm check lại các thông tin về các plugin cache thay thế cho Cache Enabler đã dùng quá nhiều năm
Tình cờ nhớ tới trang WPJohnny, hình như anh chủ cũng là người Việt Nam 😀
Quay lại chủ đề, thì thấy Johnny có giới thiệu cache plugin FlyingPress, theo quan điểm của Johnny, thì lý do quan trọng nhất ảnh quan tâm tới plugin này vì người viết ra FlyingPress là Gijo Varghese, một bậc thầy trong việc tối ưu hóa tốc độ của Wordpress
Trước đây, tiêu chí quan trọng nhất của mình, về 1 cache plugin tốt
- Phải xử lý được các vấn đề liên quan tới thời gian thực, kiểu khi có comment mới, mua hàng, add hàng vào giỏ …. thì trang đó phải được tự động xóa cache cũ đi
- Về tính năng, bắt buộc phải có phần Cache Preloading (tạo cache một cách tự động)
- Tiếp theo thì nếu được, nên tích hợp thêm vào server, load thẳng data cache NGINX → Static file, không cần thông qua PHP…. lý thuyết thì option này nó không hẳn giúp trang nhanh hơn, nhưng nó giúp độ chịu tải của trang lên hàng trăm lần
Vào FlyingPress đọc hướng dẫn thì thấy họ có đủ cả, thậm chí họ còn có 1 tính năng mới mà mình thấy khá thú vị và thiết thực là “Preload links”, nôm na khi bạn đưa chuột vào 1 link bất kì, nếu vì lý do nào đó, chưa tạo cache, thì nó cũng sẽ bắt đầu chạy ngay thời điểm bạn đưa chuột vào, nhờ thế trải nghiệm sử dụng thực tế, tốc độ tổng thể là có cải thiện
Cài thứ FlyingPress, trải nghiệm tầm 10 phút, thì FlyingPress như 1 con quái vật, khi cơ chế Cache Preloading của nó nhanh điên cuồng, thậm chí kể cả khi trang có 1 sự thay đổi, kiểu có comment mới, cache bị xóa đi, thì họ vẫn có thể xử lý thêm bằng “Preload links” khiến trải nghiệm truy cập phải nói là bố đời
Chuyện các plugin cache giúp trang chạy nhanh thì mình thấy plugin nào cũng làm tốt, nhưng xử lý khi có nhiều sự thay đổi thì FlyingPress đúng thần, ở bài test nhanh 10 phút của mình, bất kể tình huống nào, truy cập tất cả các bài viết, tốc độ truy cập đều gần như là tức thì, thử nhẹ cơ chế clear cache bằng cách comment vào 1 bài viết bất kì, xem nó có hiểu để tự clear cache đi không, thì thấy chạy tốt
Lý do mình viết bài này để giới thiệu FlyingPress là vì quá sức ấn tượng 😀 đây có lẽ là cache plugin tốt nhất mình từng sử dụng 😀
Cài Đặt
Việc cài đặt rất đơn giản, tương tự các plugin khác, thậm chí tác giả đã tích hợp luôn license vào file cài đặt, bạn không cần phải làm thêm gì cả
DASHBOARD
Tab DASHBOARD chúng ta có thể nhìn thấy được thông tin về tài khoản, ngày hết hạn sử dụng, số lượng trang đã được cache
Ở phiên bản v3.9.6 mình đang dùng thì thấy vấn đề xóa và tự tạo cache mới rất ổn định, tuy thế vì lý do nào đó, các trang cache không đủ, thì bạn có thể ấn vào Purge Cache sau đó ấn tiếp vào Purge & Preload Cache là được
CACHE
Chọn tick vào Cache Pages
Additional Auto Purge: chọn All Posts and Pages
Cache Lifespan: chọn Never (hoặc thời gian tự xóa cache bạn thích)
Cache Preloading chạy khá nhanh, 155 link trên bibica.net được tạo trong khoảng 50s (bù lại nó cũng ăn CPU khá kinh, khi chạy nó load CPU ~ 60% luôn), thành ra nên chọn tự xóa tất cả các trang khi bài viết được đăng hay chỉnh sửa, nếu bạn chỉ chọn Pages only, khi sửa tiêu đề ở 1 bài viết, các trang cache khác sẽ không cập nhập tiêu đề bị sửa này
Về Cache Lifespan (tự động xóa cache sau xxx time) thì cá nhân mình thấy không quan trọng, chọn Never cho nhẹ server, khi trang có sự thay đổi thì nó đã hoạt động theo tùy chọn Additional Auto Purge rồi
CSS
Bỏ chọn tất cả
Ở khoản xử lý css, FlyingPress thậm chí còn có khả năng lọc các css, sau đó xem cái nào không dùng thì xóa đi cho nhẹ, vụ này mình thấy tác giả có vẻ muốn khoe trình nhiều hơn là tối ưu tăng tốc, load 1 cái file css bao nhiêu kb đâu mà phải đi xử lý hộc máu như thế, bản thân trình duyệt sau khi load lần đầu tiên, cũng dùng lại thôi mà?
JAVASCRIPT
Tính năng Preload Links, giúp tải trước các liên kết khi di chuột vào, đây là 1 tính năng khá hay, thực sự hữu ích, giúp cải thiện tốc độ truy cập
FONT
Bỏ chọn tất cả
Optimize Google Fonts là 1 tính năng hữu ích, tuy thế mọi thứ liên quan tới tối ưu khác, mình nghĩ đã có hàng tấn plugin, theme khác xử lý cả rồi, thêm tính năng để khách hàng cảm thấy số tiền phải trả đáng giá hơn ư?
IMAGE
Bỏ chọn tất cả
Các tính năng ở tab Image theo mình đều khá ổn, có điều mình dùng Photon từ Jetpack để quản lý các thứ liên quan tới ảnh rồi, thành ra mình không chọn gì ở tab này, vẫn là câu nói cũ, cache plugin thì chỉ cần cache và sử lý các thứ liên quan tới cache, thêm quá nhiều thứ khác vào khách hàng đọc nhiều mệt người chứ chẳng cải thiện được gì
IFRAME
Bỏ chọn tất cả
Lazy Load iFrames hay YouTube iFrames đúng là nó có tác dụng tăng tốc trang nhất định, cũng giúp điểm số trang của bạn cao hơn ở 1 số bài test điểm, tuy thế góc độ cá nhân mình thấy nó ảnh hưởng tới trải nghiệm đọc bài, nên thường mình không dùng
CDN
Bỏ chọn tất cả
CDN mình nghĩ có tác dụng tốt trong việc giảm tải cho hệ thống, có điều ảnh thì mình đã dùng Photon từ Jetpack, các file tĩnh khác thì Cloudflare làm cả rồi, nên tab này mình không dùng gì cả
DATABASE
Bỏ chọn tất cả
Xóa các data rác trong database thì đúng là hữu ích, vấn đề là có ai lại đi cài cái cache plugin vào để dùng tính năng này bao giờ? khác gì đi mua con iPhone xong lấy cái box làm đồ chặn giấy :]]
LICENSE
Bạn có thể đổi license của mình ở tab này
Xong xuôi hết thì ấn vào Save Settings, về cơ bản lúc này trang của bạn đã hoàn tất các bước config để có thể tự vận hành một cách mượt mà, trơn tru mà không có bất cứ lỗi gì
Từ lúc này cách vận hành của trang bạn sẽ là: NGINX → PHP-FPM → PHP (FlyingPress) → Static file
Rất hiệu quả, vì lúc này không còn xử lý thông qua database nữa, sẽ giảm tải cho server rất nhiều
Có điều, nói sao nói, nó vẫn phải chạy qua PHP, nên nếu server của bạn quá yếu, hoặc quá nhiều truy cập (nhiều ở đây là tính theo cả ngàn người cùng online nhé :P), sẽ hơi ngáp ngáp 1 tí 😛 có thể tăng cường hiệu năng, độ chịu tải thêm nữa bằng cách config NGINX → Static file, đi thẳng không cần thông qua PHP, lúc này thì lý thuyết, trang của bạn có thể cân 1.000 truy cập mỗi giây 😀
Cấu hình Nginx
Bạn có thể tạo nó thành 1 file config đơn giản, kiểu flying-press.conf, sau đó include vào bên trong server {}
location ~* \.html$ { charset UTF-8; add_header x-flying-press-cache HIT; add_header x-flying-press-source Nginx; add_header cache-control "no-cache, must-revalidate, max-age=0"; } set $flying_press_cache 1; set $flying_press_url "/wp-content/cache/flying-press/$http_host/$request_uri/index.html"; set $flying_press_file "$document_root/wp-content/cache/flying-press/$http_host/$request_uri/index.html"; if ($request_method = POST) { set $flying_press_cache 0; } if ($is_args) { set $flying_press_cache 0; } if ($http_cookie ~* "(wp\-postpass|wordpress_logged_in|comment_author|woocommerce_cart_hash|edd_items_in_cart)") { set $flying_press_cache 0; } if (!-f "$flying_press_file") { set $flying_press_cache 0; } if ($flying_press_cache = 1) { rewrite .* "$flying_press_url" last; }
Hướng dẫn cụ thể
Mình đang dùng Webinoly các file config nằm ở /etc/nginx/sites-available
Mình tạo file flying-press.conf nội dung như trên, sau đó chép nó vào thư mục /etc/nginx/sites-available (cùng thư mục)
sudo nano /etc/nginx/sites-available/bibica.net
Thêm vào bên trong server {} dòng code
# FlyingPress configuration include /etc/nginx/sites-available/flying-press.conf;
Xong xuôi thì cơ bản nó sẽ giống như ảnh bên dưới:
Sau đó reload lại nginx, để thay đổi có hiệu lực
nginx -t service nginx reload
Kiểm tra cài đặt
Nếu bạn cài FlyingPress và cấu hình Nginx như trên, thì từ lúc này trở đi, bạn sẽ thấy ở response header có tiêu đề
x-flying-press-cache: HIT x-flying-press-source: Nginx
Nếu bạn cài FlyingPress thuần túy, thì từ lúc này trở đi, bạn sẽ thấy ở response header có tiêu đề
x-flying-press-cache: HIT x-flying-press-source: PHP
Trong trường hợp trang đó chưa được cache, bạn sẽ thấy x-flying-press-cache: MISS
Tính năng Cache Preloading thì không phải lúc nào nó cũng chạy tốt, thi thoảng, kiểu bạn vừa sửa bài viết, cache sẽ bị xóa, nó sẽ tự tạo lại cache cho toàn trang, lúc này nếu bạn lại thấy bài viết bị sai, sửa lại tiếp, nó lại xóa, hay có ai đó comment, hay comment liên tục, thì cache nó liên tục bị xóa, rồi lại tạo mới, tạo ra tình huống hơi loạn, đôi khi nó không tự tạo cache được nữa
Xác xuất này cũng khá hiếm, mình viết bổ xung thôi, vì nếu mình là người quản trị, khi viết, sửa bài xong, mình chỉ việc ấn vào FlyingPress, thấy nó tạo cache ổn định thì thôi, thấy nó chưa tạo thì ấn vào Purge Cache sau đó ấn tiếp vào Purge & Preload Cache là được
Changelog
Thường để đánh giá 1 plugin tốt hay không, mình hay nhìn vào số lượng download và thời gian update
Thời gian cập nhập sản phẩm đều đặn, mới nhất theo thời gian thực, nói lên sự tập trung của tác giả vào sản phẩm, tối ưu tính năng, sửa các lỗi … luôn là 1 điểm cộng rất lớn, tạo sự an tâm cho khách hàng
FlyingPress mới chỉ ra mắt 2 năm, nó chưa đủ lâu để nhiều khách hàng biết tới, dùng ở nhiều tình huống báo cáo lại các vấn đề
Giá
Nếu nhìn vào gói thấp nhất ~$60 (1 website) cho 1 năm sử dụng thì theo mình là hơi cao, nhưng nếu nhìn sang gói cuối, tính ra chỉ còn $1 cho năm đầu, năm sau chỉ còn $0.7 thì lại quá rẻ, như cho không luôn
Góc độ cá nhân, mình nghĩ giá bình quân gói Personal năm đầu ~$20-$30, các năm tiếp theo $10-$20 là đẹp nhất, ở mức giá này mình nghĩ sẽ có thêm nhiều khách hàng mới mua trực tiếp từ tác giả hơn, còn ở mức giá hiện tại, mình nghĩ phần lớn sẽ đi mua từ các Agency khác
Nếu mình mua được với giá $1/ 1 năm thì mình chỉ có thể nói ngắn gọn đây là plugin cache tốt nhất về tổng thể, trong trường hợp mua với giá $60/ 1 năm thì mình đánh giá không cao, với chi phí như thế, mình sẵn sàng dùng các plugin miễn phí, tính năng sẽ không bằng, nhưng hiệu quả sử dụng thực tếđủ ổn
Tổng kết
Mình từng dùng qua rất nhiều cache plugin, phần lớn chúng đều hoạt động không quá ổn định, tính năng preload hoạt động chập chờn, kiểu có lúc thì nó tạo cache tự động ào ào, lúc thì đơ cả ngày 😀 FlyingPress xử lý vấn đề này rất tốt
Trải nghiệm với FlyingPress rất tuyệt vời, truy cập trang ở điều kiện sử dụng thực tế rất nhanh, khi viết bài, sửa bài, hay có comment mới, gần như bạn không cảm giác là mình đang dùng cache luôn, vì thay đổi là ngay lập tức
Đồng ý là chuyện nhét tất cả tính năng vào 1 plugin, giúp bạn có 1 giải pháp tất cả trong một, cũng khá là phù hợp với số đông, có điều cá nhân mình vẫn thấy FlyingPress vẫn có nhiều tính năng không cần thiết, mang tính khoe trình nhiều quá, cụ thể tất cả tính năng râu ria khác của họ, bạn đều có thể dùng Perfmatters để thay thế, mạnh mẽ và hiệu quả hơn
Cách giải thích của tác giả về vấn đề này cũng khá logic, và hợp lý, kiểu ảnh nói teo đéo thể nào biết khách dùng các plugin khác làm sao, mỗi plugin lại vận hành 1 kiểu, kết quả đôi khi nó sẽ phải phân tích cú pháp các file html, css, js … nhiều lần, gây lãng phí tài nguyên
Tuy thế, nói sao nói, thuần túy cache, gần như plugin nào cũng sẽ hiệu quả, Cache Enabler miễn phí cũng có tác dụng tương tự, FlyingPress giá tới $60 thì theo mình là cao quá mức