Tăng tốc, tối ưu hóa cho WordPress

Dưới đây là một số kinh nghiệm tăng tốc, tối ưu hóa cho WordPress mà mình thấy có hiệu quả, thứ tự ưu tiên sẽ là từ trên xuống dưới, hi vọng bài viết sẽ giúp đỡ các bạn phần nào, về cơ bản nó cũng khá tương đồng với 1 bài mình viết bên NRG 100 điểm cho GTmetrix, Pingdom và PageSpeed Insights 😀

1. Hosting

Hosting vẫn là cái quan trọng, tiên quyết nhất của việc tăng tốc độ cho website, thật ra nếu mạng Việt Nam không đứt cáp triền miên thì mình sẽ recommend các hosting server US, giá rẻ, ổn định, băng thông nhiều, cơ sở hạ tầng, trình độ kĩ thuật và support tốt, tuy thế mạng Việt Nam trong năm 2017 đứt cáp theo mình nhớ sơ sơ khoảng 5-7 lần rồi, thành ra hiện tại dùng hosting location US gần như là không thể

Bạn có thể chọn các dịch vụ hosting có location tại Singapore, Hong Kong, Japan, Đài Loan, Trung Quốc … nói chung các nước Châu Á, gần Việt Nam là được, tuy thế vấn đề location nó lại liên quan khá nhiều về phía mạng của dịch vụ, port đi ra vào băng thông thế nào, đường truyền thuê của ai, nên cùng location như Japan hay Sing có dịch vụ sẽ nhanh, có dịch vụ lại không nhanh bằng, cái này phải thử trực tiếp mới biết, như Google Cloud cũng có server tại Tokyo, speed download cao vật vã nhưng nếu thuần TTFB lại không nhanh bằng Vultr cũng server tại Tokyo

Ở thời điểm này thì mình nghĩ là nên dùng VPS chứ không nên dùng các gói hosting share, với việc dùng các script như Webinoly, Centmin Mod, EasyEngine bạn chỉ mất đâu đó từ 10-60 phút là đã có một con VPS sẵn sàng để hoạt động, và hoàn toàn không cần biết bất cứ 1 dòng lệnh nào cả

Các dịch vụ VPS thì bạn có thể chọn Linode, DigitalOcean, Vultr, OVH … đây là các dịch vụ được cả thế giới công nhận là ổn định, uptime thường ~ 99.95%, giá cả hợp lý, thành ra không cần phải lăn tăn gì khi sử dụng cả, hoặc bạn có thể sử dụng bất cứ dịch vụ hosting nào bạn thích

Share hosting thì mình không khuyến khích, tuy thế cũng tùy thuộc nhu cầu và điều kiện, nếu chỉ cần làm một site chứa data, lâu lâu vào xem thì share hosting lại phù hợp, nhất là lâu lâu có mấy offer giảm 50-90% còn tầm $1 / 1 month thì cũng ổn (namecheap thỉnh thoảng cũng có offer 1 năm $1) một số cái tên có thể kể như StableHost, Hawk Host … trong đó SiteGround là một trong các share host tốt nhất hiện nay và được chính WordPress giới thiệu, tỷ lệ uptime khoảng 99.996% trong năm qua 😀

Yeb, chọn share host, VPS hay server sao cũng được, tùy nhu cầu sử dụng và tài chính của mỗi người, nói chung chỉ cần khi truy cập, độ trễ TTFB khi chạy < 200 ms là được 😀

Nếu nhu cầu khách vào site chủ yếu ở Việt Nam thì cũng có thể chọn server tại Việt Nam, tuy thế nói thật là mình không khuyến khích, vì giá cao, network, cơ sở hạ tầng không ổn định, thật sự thì với các hosting Việt Nam mình chẳng biết giới thiệu dịch vụ nào, theo mình nhìn thì các dịch vụ đặt server tại Viettel có vẻ tốc độ ổn hơn

Về hosting thì cá nhân mình recommend sử dụng VPS Vultr với server tại Japan cho tốc độ kết nối từ Việt Nam và tất cả các nước ổn định với chi phí hợp lý, có thời điểm mình đang dùng cả bibica.net và ngoirungdui.com trên cái gói $2.5 / 1 month của Vultr server tại Japan mà vẫn mượt mà

Recommend: dù 1001 lý do làm sao, chuyện dùng share host ở thời điểm hiện tại là không nên, nếu ai đã dùng VPS rồi thì thú thực chẳng còn ai ngó tới share host làm gì hết

Nếu bạn cần 1 dịch vụ hosting ổn định thì mình khuyên là nên dùng Lightsail, một dịch vụ VPS của Amazon, có tỷ lệ uptime tuyệt vời ở cụm location Singapore, còn nếu nhu cầu bạn cần IO cao, ổ cứng nhanh thì có thể dùng UpCloud, đây là 2 dịch vụ duy nhất mình recommend ở thời điểm này 

2. Config Hosting

Config Hosting thật sự là một bước rất khó, cần rất nhiều năm kinh nghiệm, cách đây khoảng 10 năm, mình gặp rất nhiều trường hợp dùng server riêng $100-$200 mà tốc độ chạy ì ạch còn thua xa mấy cái hosting share $1-$2 / month, tuy thế bây giờ, với sự ra đời của các auto script, việc cài đặt server chưa bao giờ đơn giản tới thế, bạn có thể sử dụng WebinolyCentmin ModEasyEngine hoặc tự config tùy thích, tuy thế mình recommend là nên dùng 1 trong 3 script trên, họ đã config sẵn Nginx + MariaDB (MySQL) + PHP v7 + HTTP/2 tối ưu cả rồi, chạy rất nhẹ và mượt

Centmin Mod gần như là chạy nhanh và mượt nhất về hiệu năng, EasyEngine đã từng là một tượng đài trong các script auto cho WordPress, tuy thế quá lâu rồi họ chưa update thêm gì mới, Webinoly thì vừa ra mắt được vài tháng, dùng cái nào cũng được, tùy sở thích và hệ điều hành bạn muốn dùng, chúng đều rất tốt

Tất nhiên bạn thích tự config cũng được, vì nói sao nói, các script auto thì họ thường config chuẩn các thông số quanh quanh ở mức 1-2GB RAM, nếu có nhu cầu cao hơn thì cần sửa lại cho phù hợp, cơ mà nói thật là không nhiều người có thể đứng ra vỗ ngực là config WordPress tốt hơn 3 script kể trên đâu :]]

Như bạn thấy, mình từng chạy 2 site bibica.net và ngoirungdui.com bằng WordPress trên VPS Vultr 512 MB RAM trung bình chỉ dùng hết ~ 300 MB RAM, CPU load gần như không đáng kể 😀

Cá nhân thì mình recommend Webinoly vì siêu nhẹ và đơn giản, chỉ mất khoảng 10 phút là bạn đã cài đặt xong các thứ để có thể sử dụng, tất nhiên bạn có thể thử Centmin Mod nếu muốn thử cảm giác xé gió :]] mình thì hơi lười tìm hiểu sang CentOS với lại Webinoly hay EasyEngine là quá đủ với mình 😀

Nếu thích hàng Việt Nam bạn có thể thử VPSSIM, một sản phẩm chạy trên Centos 6 & 7, điểm rất tuyệt là họ có rất nhiều tính năng hữu ích như sao lưu và phục hồi full website (cả code và database), thêm nữa là họ sử dụng ngôn ngữ tiếng Việt, rất phù hợp cho bạn nào mới bắt đầu sử dụng các script dạng auto thế này, khi mới sử dụng mình cũng dùng qua VPSSIM 😀

Update 22/04/2018: Ở thời điểm này mình chỉ recommend một lựa chọn duy nhất là Webinoly, đơn giản là vì mình thấy nó quá đủ cho mọi nhu cầu

3. Optimization images

Nếu không có gì quá đặc biệt, thì thông thường hình ảnh chiếm khoảng 50%-80% dung lượng của trang web đó, bởi thế, nếu tối ưu hình ảnh tốt, thì bạn đã tăng tốc độ trang web lên rất nhiều rồi

Để tối ưu ảnh thì bạn chỉ cần dùng Jetpack Image CDN là đủ, không cần phải dùng thêm các script tối ưu ảnh khác như WP Smush, EWWW Image Optimizer, Optimus hay Kraken.io … nữa

Các dịch vụ như Jetpack Image CDN ngoài trừ chuyện tự động tối ưu ảnh (nén ảnh), họ còn kèm theo các dịch vụ CDN, khiến tốc độ load ảnh gần như tức thời, bạn sẽ tiết kiệm được rất nhiều băng thông và tài nguyên máy chủ, vô cùng hiệu quả, kèm theo đó là họ sử lý vấn đề server <-> server, bạn không phải tốn thời gian để tối ưu ảnh khi upload hình lên nữa, tiết kiệm rất nhiều thời gian 😀

Thật sự thì nếu dùng qua Jetpack Image CDN rồi thì gần như không còn ai muốn dùng lại các plugin tối ưu ảnh dùng các công nghệ cũ như WP Smush, EWWW Image Optimizer, Optimus hay Kraken.io … nữa

Cá nhân mình recommend sử dụng Jetpack Image CDN, nó FREE 100% băng thông, server lại cực kì mạnh, gần như với Jetpack Image CDN mình chưa khi nào thấy ảnh load tới giây thứ 2, kể cả khi đứt cáp quốc tế 😀

4. WordPress Caching

Cache là phương pháp đơn giản và hiệu quả nhất cho việc tăng tốc và giảm tải cho WordPress, bạn có thể dùng bất cứ plugin cache nào bạn thích, thông dụng thì có WP Super Cache, W3 Total Cache, WP Rocket hay một số tên ít người biết tới hơn như WP Fastest Cache, Comet Cache, Cache Enabler …

Bạn có thể dùng Cache Enabler, nó là một plugin miễn phí được làm bởi KeyCDN, cực kì đơn giản và hiệu quả, WP Fastest Cache cũng rất tốt, dễ sử dụng

Tuy thế cá nhân mình vẫn recommend sử dụng kết hợp WP Rocket và Rocket-Nginx, lúc này trang web được đi thẳng từ NGINX → Static file nên rất nhanh và sử dụng tài nguyên server cực kì ít, VPS Vultr 512 MB RAM khi sử dụng WP Rocket và Rocket-Nginx thì sơ sơ có thể chịu tải được 1000 người online trên mỗi giây

WP Rocket cũng có thêm các tính năng rất mạnh và hiệu quả khác như LazyLoad, Database Optimization, CDN, cache theo cookies, user agents, query strings … giúp bạn có thể tích hợp gần như tất các plugin khác chạy cùng mà không gây lỗi

WP Rocket tuy chỉ dùng phương pháp cache đơn giản nhất, cache thành file html, tuy thế, việc kết hợp sử dụng kèm Rocket-Nginx, giúp bỏ thẳng qua vấn đề truy xuất php khiến nó trở thành một plugin cache hiệu quả nhất hiện nay cho WordPress, nếu có chê, thì chắc chỉ có thể chê tính năng Minify, Combine và Render-blocking file CSS/JS chưa tốt lắm mà thôi

Update 22/04/2018: thật sự thì mình vẫn chưa tìm ra giải pháp cache nào tốt hơn ở thời điểm này ngoại trừ sự kết hợp WP Rocket và Rocket-Nginx

5. Cloudflare (CDN, DNS, Cache)

Sử dụng Cloudflare cho DNS và CDN cải thiện khá nhiều về tốc độ, thậm chí nếu bạn đang dùng 1 hosting US cũng cải thiện cực tốt, bật Cloudflare lên một phát tất cả các thông số về thời gian load, DNS, SSL, TTFB đều giảm xuống đáng kể

Update 30/03/2018: nếu muốn trải nghiệm cảm giác nhanh nhất có thể, hãy thử kết hợp Cloudflare và SuperSonic, theo đánh giá chủ quan của mình thì dù bạn đang dùng server location US nhưng vẫn gần đạt tốc độ tại server đặt tại Việt Nam 😀 

Trong 5 bước trên, 3 bước đầu tiên gần như là 3 giải pháp quan trọng nhất trong việc tối ưu, tăng tốc cho WordPress, nếu traffic bạn ít thì chỉ cần làm 3 bước đầu là đủ, khi nào trang của bạn có hàng trăm hay hàng ngàn user online cùng lúc thì có thể tham khảo thêm bước 4 và 5, 2 bước này là để tăng khả năng chịu tải cho WordPress, thì  nó thật sự hiệu quả, đơn giản và rẻ tiền, bạn không cần quá nhiều kiến thức cũng có thể làm được, gần như chỉ là download plugin về và chạy là xong 😀

Trong đó, Cloudflare là một biến số, nếu dịch vụ của họ tốt, hiện tại đã có server tại Sing, Japan, Hong Kong … 1 ngày nào đó họ có server tại Việt Nam thì thậm chí nó thể trở thành chìa khóa số 1 trong việc tăng tốc và tăng khả năng chịu tải cho WordPress

6. Theme

Từ bước thứ 6 này trở đi, thì nó không quá quan trọng, có cải thiện, nhưng không hiệu quả bằng 5 bước đầu tiên 😀

Bạn có thể thoải mái lựa theme bạn thích, miễn phí hay trả phí đều được, không thành vấn đề, nếu 1 theme miễn phí có khoảng > 10.000 lượt download thì đều rất tốt rồi, theme trả phí thì chỉ cần phiên bản mới nhất vẫn đang còn được tác giả update trong khoảng 3 tháng là được

Theme thì mình recommend 2 sản phẩm là Flatsome và GeneratePress, tác giả viết 2 theme này trình độ đều rất cao, tốc độ update cũng rất đều đặn, theme cũng rất đơn giản và đẹp, tùy biến cao

Flatsome, một bộ theme vô cùng đồ sộ với 1 rừng tính năng mà nhẹ hều, chạy cứ phải nói là xé gió :]] phải nói đây là một trong các giao diện xứng đáng tới từng đồng phải trả 😀

GeneratePress thì phải nói thẳng là không bằng Flatsome, để dễ hình dung thì Flatsome nếu chơi game ta gọi là auto play 😀 còn GeneratePress thì gọi là semi auto 😛 tuy thế, nếu thuần túy chỉ là blog, nó cũng đủ dùng và đủ xài 😀

7. Plugin

Sử dụng, chọn lựa plugin cho WordPress nó cũng khó nhằn không thua gì bước 2, config hosting, rất chua, cần nhiều kinh nghiệm, như bạn cần một tính năng nào đó cho blog hoặc shop của bạn, nhưng search ra được cái plugin chạy đúng yêu cầu, nó lại gây lỗi đụng chạm với 1 số plugin đang sử dụng, vấn đề tiếp theo là bắt buộc bạn cần tính năng đó, không bỏ được, còn cố search ra các plugin có tính năng tương tự thì không ra, hỏi có mệt mỏi không 😀

Hay như đơn giản bạn cần mấy cái form nhỏ nhỏ để làm phần contact, send mail đơn giản, không dưới 50-100 plugin có tính năng như thế, chọn thèng nào? Contact Form 7 từng là một tượng đài cho chuyện này, thậm chí có người từng nói “teo sử dụng nó cho vài trăm trang web, mà dạo này bị spam khủng khiếp wá”, ok, tiếp theo thì để hạn chế spam, đơn giản nhất, ta sử dụng thêm reCAPTCHA, cũng chẳng vấn đề gì, nhưng nó làm chậm trang của bạn vì phải load thêm 1 mớ API chó má gì đó từ Google, chưa kể còn gây sự khó chịu cho khách vào xem, gửi có cái mail liên hệ mà thèng reCAPTCHA nó bắt click vào xe, vào cây, vào bảng chỉ đường, bực, ếu thèm liên hệ lun, bạn cứ thử dùng các trình duyệt nào đó, không phải dùng core là Google Chrome vào mấy trang sử dụng reCAPTCHA là thấy, thèng Google nó bắt click chít mịa lun 😀 Yeb, giải pháp của mình thì vẫn là Contact Form 7 nhưng dùng thêm WordPress Zero Spam để chống spam cho hệ thống khi đăng kí tài khoản, gửi email, gửi comment …

Mình cũng có viết 1 trang về phần Toolbox, các plugin và theme đang sử dụng, tuy thế mình nghĩ nó sẽ thay đổi liên tục, kinh nghiệm thì trước khi dùng plugin nào đó, bạn thử google trước, xem các review đánh giá thế nào, sau đó vào thẳng kho WordPress.Org search, cách thủ công hơn là thử từng cái một cho tới khi hài lòng vậy 😀 Fast Velocity Minify mình cũng dùng cách này mà biết tới nó đấy, vì gần như chẳng mấy ai dùng, cả Việt Nam lẫn thế giới :]] WordPress Zero Spam cũng thế, gần như search không ra bài viết nào ngôn ngữ tiếng Việt nói về nói luôn :]]

Cài 30-50 plugin mà viết tốt thì đôi khi nó còn nhẹ hơn 2-3 plugin mà nặng, cồng kềnh đấy, có điều cũng đừng quá lo lắng, nếu bạn làm đủ 5 bước đầu rồi thì thật ra có chạy 30-50 plugin cũng chẳng thành vấn đề, miễn sao chúng đừng đụng chạm lẫn nhau, gây lỗi thôi, còn thuần túy nặng thì cũng khó xảy ra lắm vì cơ bản được cache thành file html cả rồi

8. Fast Velocity Minify

Fast Velocity Minify là một add on cho WordPress giúp giảm các request HTTP bằng cách gom các file CSS và Javascript vào thành 1 file, cố gắng sử dụng số lượng file ít nhất có thể, nó cũng giảm kích thước file CSS và các tập tin JS lại luôn, bằng cách dùng với PHP Minify (hoặc YUI Compressor), hoặc bạn có thể dùng Autoptimize, phiên bản mới nhất v2.3.2 dùng cũng rất tốt và ít lỗi

Phải nói Fast Velocity Minify bá đạo trên từng hạt gạo, sử dụng theme GeneratePress và 4-5 các plugin khác, mà nó gom lại hết các file js, css lại, còn khoảng đâu đó ~ 45kb – 50kb mà thôi 😀

Từ đâu đó hơn 30 request giảm xuống còn 17-19 request, nhìn số request giảm xuống thì có vẻ thích, có điều thực tế sử dụng thì cũng không khác gì mấy, vì các file js, css nó cũng chỉ load 1 lần đầu tiên khi vào web, sau đó trình duyệt cache và sử dụng lại, thành ra bước này thuần túy chỉ để lấy 100 điểm từ GTmetrix, Pingdom và PageSpeed Insights cho đẹp chứ hiệu năng hay tốc độ khó mà cảm nhận được

Cơ bản là thế, nếu bạn làm theo đúng như các bước ở trên, thì thường site bạn truy cập sẽ rất nhanh, trung bình ~1s là sẽ load xong, server được config tốt, chạy rất mượt, nó cũng chẳng phải load gì nhiều vì các thứ nặng nhất là hình ảnh thì đã sử dụng các dịch vụ chuyên về ảnh rồi, các trang thì đã được cache, đi thẳng từ NGINX → Static file nên cũng chẳng ngại khi nhiều người cùng vào 😀

Dùng các plugin dạng này thì thật sự mình không khuyến khích lắm, thứ nhất nó rất dễ gây lỗi, phải config, sửa rất kĩ các thứ đang chạy trên WordPress, mất thời gian, hai là hiệu quả cũng không đáng kể nếu bạn đã làm đủ 5 bước trên cùng, nhất là ở giai đoạn này nhà nhà, người người chuyển sang SSL, chạy HTTP/2 cả, nên chuyện gom file lại thế này không còn hiệu quả lắm, thuần túy nhìn điểm đẹp thôi 😛 Tác giả viết Fast Velocity Minify, họ cũng nói nhanh gọn là chúng teo giúp bọn mài cải thiện điểm số trên GTmetrix, Pingdom Tools và Google PageSpeed thôi, không hề có câu nào nói sẽ giúp tăng tốc độ lên cả 😛

9. Perfmatters

Perfmatters là một plugin tăng tốc hiệu xuất cho WordPress, được anh em nhà Jackson viết nên, họ là một trong những người cực đoan về hiệu năng cho WordPress nhất mà mình từng gặp
Bằng cách bật, tắt các tính năng ở những vị trí không cần thiết, set vị trí load các file js, css, bạn sẽ giúp trang chủ tăng thêm từ 10-20% hiệu năng so với bình thường

Vấn đề này mình không chắc, nhưng thường mình dùng WordPress Zero Spam để chặn spam, khá hiệu quả, vì gần như mình không còn thấy 1 tin nhắn rác hay đăng kí tài khoản ảo nào nào nữa, có điều vẫn thấy trong phần log spam các thứ bị chặn từ WordPress Zero Spam, còn sau khi cài perfmatters vào thì thậm chí còn không thấy gì trong phần spam luôn :]]

Không rõ có phải là tắt vài tính năng nào đó, tiện thể vô tình tắt trúng cơ chế của mí spammer không nữa, mà giờ bình yên vãi úa 😀

Mình nghĩ nên dùng Perfmatters thay cho bước 7 , nó dễ sử dụng và ít lỗi hơn Fast Velocity Minify hoặc Autoptimize

Hiệu quả: đồng ý là có, nhưng nói thật là không đáng kể, chủ yếu nó tăng tốc thêm cho trang chủ được một tẹo thôi 😛

Hiện tại mình đang dùng Perfmatters để chặn việc load file devicepx-jetpack.js :]] ah, đơn giản là giảm đi thêm 1 request, điểm số trên GTmetrix, Pingdom Tools và Google PageSpeed được max thôi 😛

Tổng thế thì vẫn là 5 bước đầu tiên là hiệu quả lắm rồi, các bước sau thì gọi là tối ưu theo hướng cực đoan, chủ nghĩa hoàn mỹ để đạt hiệu quả hết sức có thể thôi, chứ mình nghĩ tất cả các bước sau chỉ tăng thêm tầm 10-20% hiệu quả (ở tùy trang) là cao lắm rồi ^_^

Hiện tại thì mình khá hài lòng về giá trị và số tiền phải bỏ ra hàng tháng để duy trì bibica.net và ngoirungdui.com 😀 Với việc dùng Lightsail và AWS Gift Card, mình chỉ tốn $15 cho tầm 1 năm sử dụng VPS, nôm na khoảng $1.25/month, quanh quanh đâu đó 30.000 vnđ mà vẫn đảm bảo tiêu chí về tốc độ và độ chịu tải, vào đọc bài thì 1000 người vào cùng lúc cũng chỉ mất khoảng 1s, cao lắm là 2s để có thể load xong trang, còn comment hay mua hàng thì tất nhiên sẽ chậm hơn, vì lúc này cơ chế cache gần như tắt điện :]] tuy thế mình nghĩ vẫn có thể chịu tải bèo bèo vài chục người cùng vào đặt hàng mà không vấn đề gì 😛 còn khi số người đặt hàng cao hơn con số này thì đã thừa tiền để có thể nâng cấp VPS lên gói cao hơn mà hem phải đắn đo gì ráo 😀

Cập nhập lần cuối vào lúc 09/10/2018