XenForo mang đến làn gió mới cho phần mềm diễn đàn và đang nhanh chóng trở thành một trong những nền tảng diễn đàn phổ biến nhất thế giới. Trong bài này, chúng tôi chia sẻ các kỹ thuật tăng tốc diễn đàn XenForo để bảo đảm trang tải nhanh cho khách truy cập.
XenForo là gì?
XenForo là phần mềm diễn đàn cộng đồng xây dựng trên Zend Framework, ra mắt năm 2011. Phần mềm do Kier Darby và Mike Sullivan, hai cựu trưởng nhóm phát triển vBulletin, phát triển và duy trì.
Theo Google Trends, mức độ quan tâm đến XenForo tăng đều trong bốn năm qua, trong khi vBulletin và Invision Power Board (IPBoard) đang giảm.

XenForo nổi tiếng với cơ cấu giá đơn giản, SEO tích hợp sẵn, phát triển tích cực, hỗ trợ nhanh, cùng nhiều add-on giúp làm được hầu hết mọi việc.
Tăng tốc XenForo
Như đã trình bày trong hướng dẫn tăng tốc WordPress, XenForo cũng có thể chậm dần theo thời gian, nhất là vì đây là phần mềm cộng đồng. XenForo tốn tài nguyên máy chủ hơn nhiều và tùy mức hoạt động của thành viên, có thể ghi vào cơ sở dữ liệu liên tục. Hãy làm theo các bước dưới đây để tăng tốc XenForo và giữ nó chạy nhanh, để khách truy cập quay lại.
Mục lục tăng tốc XenForo
- Mạng phân phối nội dung (CDN)
- Tận dụng bộ nhớ đệm
- Tối ưu hình ảnh
- jQuery qua CDN hay cục bộ
- Nén (minify) CSS
- Trì hoãn Javascript (chuyển xuống cuối)
- Ít add-on hơn
- Giảm số HTTP request
- Tận dụng bộ nhớ đệm trình duyệt
- Chọn hosting XenForo nhanh
1. Mạng phân phối nội dung (CDN)
Triển khai mạng phân phối nội dung (CDN) với XenForo nhanh và dễ. Nhờ đó, tài nguyên tĩnh (hình ảnh, javascript, CSS) được phân phối từ nhiều vị trí trên thế giới, đến khách truy cập nhanh hơn. KeyCDN tích hợp với XenForo rất đơn giản. Làm theo các bước dưới đây.

- Tạo một pull zone trong tài khoản KeyCDN.
- Đi tới thư mục gốc (document root) của bản cài XenForo.
- Thêm đoạn mã sau vào tệp library/config.php, dùng URL CDN của bạn, ví dụ http://yourzone-ab12.kxcdn.com
</pre><pre>$config['externalDataUrl'] = 'http://yourzone-ab12.kxcdn.com/data'; $config['javaScriptUrl'] = 'http://yourzone-ab12.kxcdn.com/js';</pre>
- Đăng nhập control panel của XenForo và vào “Appearance” → “Styles” → [Style của bạn] → “Style Properties” → “General”.
- Ở ô “Path to Images”, thay giá trị mặc định “styles/default” bằng “http://yourzone-ab12.kxcdn.com/styles/default” và nhấp nút “Update Style Properties” để áp dụng thiết lập mới

2. Tận dụng bộ nhớ đệm
Chúng tôi rất khuyến nghị dùng bộ nhớ đệm cho diễn đàn XenForo. Bạn có thể dùng add-on cache hoặc cấu hình bộ nhớ đệm của XenForo phía máy chủ.
Plugin bộ nhớ đệm
Có một add-on phổ biến là [bd] Cache từ xfrocks.com mà chúng tôi khuyên dùng. Nó có thể cache mọi danh sách, view và trang có sẵn. Có thể hiển thị trang với 0 truy vấn cơ sở dữ liệu. Phần lớn người dùng thấy thời gian tải trang giảm một nửa. Plugin hoạt động dù có bật back-end cache hay không.
Tính năng của [bd] Cache
1. “Cache Pages” (chỉ cho khách) để đạt tốc độ cao nhất
2. Admin có thể xóa cache cho từng trang bất cứ lúc nào
3. “CSS to file” để phân phối nhanh hơn, cho phép đặt stylesheet sau CDN
4. “Defer JS” để trang hiển thị trên trình duyệt sớm nhất có thể.
Nếu bạn chạy XenForo trên máy chủ Redis, có add-on cache sau: Zend Redis Cache
Bộ nhớ đệm phía máy chủ
XenForo có tài liệu hướng dẫn định nghĩa cache cho cả front-end và back-end.
Cache front-end
Cấu hình front-end rất dễ, chỉ cần thêm các dòng sau vào tệp library/config.php.
$config['cache']['enabled'] = true; $config['cache']['frontend'] = 'Core'; $config['cache']['frontendOptions']['cache_id_prefix'] = 'xf_';
Bạn cũng có thể cache session bằng cách thêm đoạn sau.
$config['cache']['cacheSessions'] = true;
Cache back-end
XenForo có ba phương thức cache có thể dùng cho back-end.
- File back-end
$config['cache']['backend'] = 'File';
- APC back-end
$config['cache']['backend'] = 'Apc';
- Memcached back-end
$config['cache']['backend'] = 'Memcached'; $config['cache']['backendOptions'] = array( 'compression' => false, 'servers' => array( array( // your memcached server IP /address 'host' => 'localhost', // memcached port 'port' => 11211, ) ) );
LiteSpeed
Một lựa chọn phía máy chủ khác được khuyến nghị là dùng LiteSpeed. Theo một case study của LiteSpeed, tối ưu web server và MySQL đã giúp bản cài XenForo của ForoMTB nhanh hơn 30 lần.
Giờ diễn đàn của tôi tải trang như thể trống trơn, dù có hơn 3000 người dùng đang kết nối. – ForoMTB
3. Tối ưu hình ảnh
Như với mọi website, tối ưu hình ảnh rất quan trọng với XenForo, nhất là khi xử lý ảnh đính kèm dung lượng lớn trong các chủ đề. Tối ưu hình ảnh giúp trang hiển thị nhanh nhất và tiết kiệm dung lượng ổ đĩa trên máy chủ.
Chúng tôi khuyên dùng add-on GoodForNothing Kraken để tối ưu và nén ảnh đính kèm trên diễn đàn.
Đã xử lý 453k ảnh, tiết kiệm 134.9GB dung lượng ổ đĩa, giảm 55%. – talkbass.com
Có hai lựa chọn khi nén ảnh. Bạn có thể trì hoãn việc nén ảnh đính kèm bằng add-on như GoodForNothing Shell Defer, hoặc nén ngay khi tải lên, nghĩa là khách truy cập sẽ phải chờ thêm một chút.
4. jQuery qua CDN hay cục bộ
Phân phối jQuery qua CDN gần như luôn nhanh hơn cục bộ vì có thể phân phối từ nhiều vị trí gần khách truy cập hơn. XenForo có sẵn tùy chọn thay đổi nơi nạp jQuery. Để thay đổi, vào “Options” → “Performance”, ở cuối trang có mục chọn nguồn jQuery. Google CDN là lựa chọn tốt để bắt đầu.

5. Nén (minify) CSS
XenForo có sẵn tùy chọn nén CSS. Để bật, vào “Options” → “Performance” và bật “Minify CSS.”

Add-on cache [bd] Cache đã nhắc ở trên cũng cho phép nén CSS.
6. Trì hoãn Javascript (chuyển xuống cuối)
Luôn nên trì hoãn javascript và đặt ngay trước thẻ </body>. Mặc định, XenForo nạp javascript ở phần header, không tốt cho tốc độ và không đúng khuyến nghị của Google PageSpeed Insights.
Có add-on miễn phí Defer JS, gom javascript trong output của trang bài viết và chuyển xuống cuối trang. Điều này cải thiện rõ thời gian tải trang, vì các HTTP request đang chờ làm chậm việc hiển thị trang, trong khi script vốn không chạy cho đến khi mọi thứ được nạp xong.
Hoạt động khá tốt với tôi, điểm defer js tăng từ F lên C! Không còn trượt nữa 🙂 – Noobstradamus
Bạn cũng có thể trì hoãn javascript bằng add-on [bd] Cache đã nhắc ở trên.
7. Ít add-on hơn
Giống WordPress, XenForo càng ít plugin/add-on càng tốt. Mỗi add-on làm tăng số HTTP request và thời gian tải các tệp Javascript hoặc CSS đi kèm. Dù nhiều mẹo tối ưu kể trên là add-on, chúng tôi luôn khuyên kiểm tra tốc độ diễn đàn để xem bạn đang nhanh hơn hay chậm đi, vì có add-on hiệu quả hơn add-on khác. Hãy tự hỏi: bạn có thực sự cần add-on đó, hay nó chỉ là tính năng hay ho mà không có cũng được.
8. Giảm số HTTP request
Như vừa nói ở trên, hãy luôn phân tích số HTTP request mà diễn đàn XenForo tạo ra. Một tinh chỉnh nhỏ chúng tôi khuyên dùng là bỏ phần chia sẻ ở sidebar. Đây là cách đơn giản để trang chủ tải nhanh hơn.
Để làm vậy, vào “Appearance” → “Styles” → [Style của bạn] → “Templates” và mở template “sidebar_share_page”. Sau đó chỉ cần xóa nội dung của nó. Khi muốn thêm lại vào sidebar, chỉ cần khôi phục (revert) template.

Làm vậy sẽ giảm số lượt tra cứu DNS trên trang chủ.
9. Tận dụng bộ nhớ đệm trình duyệt
Một dạng bộ nhớ đệm khác có thể tận dụng là bộ nhớ đệm trình duyệt. Xem các đoạn mã sau có thể thêm vào .htaccess file, như bật nén Gzip, thêm expire header và tắt ETag.
Nén Gzip
Gzip nén trang web và stylesheet ở phía máy chủ trước khi gửi tới trình duyệt.
<IfModule mod_deflate.c> # Compress HTML, CSS, JavaScript, Text, XML and fonts AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml # Remove browser bugs (only needed for really old browsers) BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html Header append Vary User-Agent </IfModule>
Expire Header
Expire header cho trình duyệt biết nên yêu cầu tệp từ máy chủ hay lấy từ bộ nhớ đệm của trình duyệt.
<ifModule mod_expires.c> ExpiresActive On ############################################ ## Add default Expires header ## http://developer.yahoo.com/performance/rules.html#expires <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> ExpiresDefault "access plus 1 year" </FilesMatch> </ifModule>
10. Chọn hosting XenForo nhanh
Cuối cùng nhưng không kém phần quan trọng, chọn hosting XenForo nhanh có thể là một trong những quyết định quan trọng nhất khi muốn cải thiện hiệu năng XenForo. Chúng tôi khuyên tránh shared hosting giá rẻ vì họ thường nhồi nhét máy chủ, và bạn sẽ phải chia sẻ tài nguyên với hàng trăm người. Chúng tôi gợi ý dùng VPS như Digital Ocean, Linode hoặc Vultr. Lý do là bạn sẽ hoàn toàn làm chủ tài nguyên. Và nếu không rành kỹ thuật hoặc không muốn quản lý máy chủ qua dòng lệnh, ServerPilot là control panel thay thế tuyệt vời, hoạt động với XenForo và các nhà cung cấp VPS kể trên.
Tóm tắt
Có thể thấy, có khá nhiều cách tăng tốc XenForo: từ triển khai CDN, bộ nhớ đệm, giảm HTTP request, tối ưu hình ảnh, nén CSS, trì hoãn javascript đến cấu hình phía máy chủ. Có một nhà cung cấp hosting tốt cũng quan trọng không kém.
Bạn có cách nào khác để tăng tốc diễn đàn XenForo mà chúng tôi chưa nhắc tới? Hãy chia sẻ với chúng tôi trong phần bình luận bên dưới.
