Thủ Thuật Hướng dẫn tăng tốc Xenforo

ngocdo

Private
Tham gia
03/04/2016
Bài viết
1
Được Like
11
*** Bài viết này được dịch từ link sau: https://www.keycdn.com/blog/speed-up-xenforo/
*** Bài viết gốc tiếng Việt: http://laptrinhaz.net/huong-dan-tang-toc-xenforo/

Xenforo là mã nguồn mở forum (được viết bằng Zend Framework) khá nổi tiếng trong vài năm trở lại đây và ngày càng thay thế được hệ thống forum Vbulletin đã cũ kỹ. Đối với những forum có nhiều thành viên, lượng bài viết ngày càng lớn thì việc tăng tốc website là điều không thể bỏ qua. Trong bài viết này, tôi sẽ hướng dẫn một số cách tăng tốc forum Xenforo để giúp forum của bạn chạy nhanh hơn, bớt ì ạch hơn.

1. Sử dụng CDN
– CDN là viết tắt của Content Delivery Network (được hiểu là mạng lưới máy tính trải dài trên toàn cầu). Khi sử dụng CDN, những file tĩnh của website như css, javascript và hình ảnh sẽ được lưu trữ trên server của nhà cung cấp dịch vụ CDN tại nhiều location khác nhau để đảm bảo rằng bất kỳ truy cập từ đâu cũng đạt được tốc độ tải về file tĩnh 1 cách nhanh nhất. Ở đây tôi sẽ hướng dẫn bạn cấu hình Xenforo tương thích với KeyCDN

a) Tạo 1 pull zone trên KeyCDN
b) Thêm đoạn code sau vào file library/config.php (trong ví dụ này đường link KeyCDN của tác giả là http://yourzone-ab12.kxcdn.com)

$config['externalDataUrl']='http://yourzone-ab12.kxcdn.com/data';
$config['javaScriptUrl']='http://yourzone-ab12.kxcdn.com/js';


c) Đăng nhập vào Xenforo của bạn, tìm đến mục “Appearance” → “Styles” → [Your Style] → “Style Properties” → “General”. Tại dòng “Path to Images” bạn xóa giá trị mặc định “styles/default” và thay bằng “http://yourzone-ab12.kxcdn.com/styles/default”. Sau đó bấm vào “Update Style Properties” để cập nhật.



2. Sử dụng cache (bộ nhớ đệm)

a) Dùng plugin cache

– Một add-on khá nổi cho Xenforo tên là [bd] Cache sẽ giúp bạn cache nhiều thành phần trên website, hạn chế tối đa lượng truy cập vào database.
– Một số chức năng của [bd] Cache:
+ “Cache Pages”
+ “Purge cache”
+ “CSS to file”
+ “Defer JS”

– Nếu bạn đang sử dụng Redis làm cache server, bạn có thể sử dụng add-on: Zend Redis Cache

b) Cache từ phía server (server side caching)

– Xenforo có thể định nghĩa cache cho cả 2 phần front-end và back-end, bạn có thể tham khảo tại đây

+ Cache front-end

– Cấu hình cho cache front-end khá dễ dàng, bạn thêm những dòng sau vào file library/config.php

$config['cache']['enabled']=true;
$config['cache']['frontend']='Core';
$config['cache']['frontendOptions']['cache_id_prefix']='xf_';


– Bạn có thể tạo cache cho session bằng cách thêm vào dòng dưới đây

$config['cache']['cacheSessions']=true;

+ Cache back-end

– Xenforo có 3 cách để cache cho back-end

++ Cách 1/ Cache file

$config['cache']['backend']='File';

++ Cách 2/ APC cache

$config['cache']['backend']='Apc';


++ Cách 3/ Memcached

$config['cache']['backend']='Memcached';
$config['cache']['backendOptions']=array(
'compression'=>false,
'servers'=>array(
array(
// your memcached server IP /address
'host'=>'localhost',
// memcached port
'port'=>11211,
)
)
);


– Tùy vào từng trường hợp bạn có thể sử dụng 1 trong 3 cách trên, đối với cách 2 & 3 thì vps/server của bạn phải cài đặt sẵn APC hoặc Memcached

c) LiteSpeed

– LiteSpeed là 1 một web server tốc độ cao, hiệu suất tốt và khả năng chịu tải hơn hẳn Apache. Một case study được chia sẻ từ trang web của LiteSpeed, forum của ForoMTB được xây dựng bằng Xenforo sử dụng công nghệ LiteSpeed + tối ưu MySQL tốt có thể cho tốc độ nhanh gấp 30 lần so với lúc chưa tối ưu. => Link case study



3. Tối ưu hình ảnh

– Tối ưu hình ảnh đúng cách cho phép thời gian đáp ứng của forum Xenforo nhanh hơn cũng như tiết kiệm được dung lượng ổ cứng trên VPS/Server của bạn. Add-on khuyên dùng cho việc này đó là GoodForNothing Kraken

– Một chia sẻ từ trang talkbass.com đó là forum của họ có khoảng 453.000 ảnh, sau khi sử dụng add-on này, họ tiết kiệm được 134,9GB dung lượng tương đương với 55% dung lượng của toàn bộ ảnh

4. Sử dụng CDN cho Jquery

– Jquery là 1 Javascript framework nổi tiếng đước sử dụng cho Xenforo, Jquery có sẵn CDN ở nhiều server trên thế giới, do đó bạn nên tận dụng những nguồn CDN để Jquery được tải về nhanh nhất có thể mỗi khi user truy cập vào Xenforo forum. Truy cập vào “Options” → “Performance”, Google AJAX API CDN là lựa chọn tốt, hoặc bạn có thể sử dụng CDN từ trang chủ của Jquery hoặc Microsoft



5/ Tối ưu CSS

– Bạn vào “Options” → “Performance”, đánh dấu check vào phần “Minify CSS” để kích hoạt tính năng này



– Hoặc bạn có thể sử dụng add-on [bd] Cache để làm việc trên

6/ Defer Javascript (đưa tất file javascript ra trước thẻ </body>)

– Việc đưa tất cả các file Javascript xuống dưới cùng website (phía trước thẻ đóng </body>) có thể giảm thiểu thời gian chờ khi website được load. Điều này cũng được Google PageSpeed Insights khuyến cáo là nên làm. Bạn có thể sử dụng add-on Defer JS để làm điều này

7/ Chỉ sử dụng những add-on cần thiết

– Cài đặt quá nhiều add-on cho Xenforo có thể làm chậm tốc độ forum của bạn. Chỉ nên sử dụng nhưng add-on thật sự cần thiết, còn nếu không bạn nên hạn chế số lượng add-on thấp nhất có thể cho Xenforo.

8/ Giảm thiểu request HTTP

– Bạn vào “Appearance” → “Styles” → [Your Style] → “Templates”, click vào “sidebar_share_page”template, xóa tất cả nội dung trong mục này



9/ Tận dụng bộ nhớ đệm (cache) của trình duyệt

a) Gzip Compression

– Bật chế độ Gzip để web server có thể nén những file tĩnh trước khi trả lại cho trình duyệt. Thêm đoạn code sau vào file .htaccess

<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/4gzip-only-text/html
BrowserMatch^Mozilla/4\.0[678]no-gzip
BrowserMatch\bMSIE!no-gzip!gzip-only-text/html
Header append Vary User-Agent
</IfModule>

b) Expire Headers

– Bật chế độ expire (hết hạn) khi trả về header cho trình duyệt, bạn có thể quy định thời gian hết hạn cho file tĩnh, nếu vẫn chưa đến thời gian hết hạn thì trình duyệt web của user sẽ lấy từ bộ nhớ đệm (cache) của trình duyệt thay vì gửi request đến server.

<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>

 

Jindo_Katori

FirstSergeant
Tham gia
01/03/2015
Bài viết
1,462
Được Like
1,205
Bài dịch được đầu tư rất nhiều công sức.
Tuy trình độ chưa tiếp thu được nhiều nhưng tks for share.
 

dkv

Private
Tham gia
17/02/2016
Bài viết
40
Được Like
20
vừa dùng redis vừa dùng bd cache được không thớt?
 

Hướng dẫn sử dụng

XenForo 1 XenForo 2
Translate by PVS

Dịch vụ XenForo của VNXF

Mr. Tuấn

Mobile/Zalo: 0988 488 096

Telegram: bluekpro

Email: [email protected]

Nhà Tài Trợ

Mút Xốp Không Gian
pallet Thịnh Phát
Top Bottom