Một vài thủ thuật hay với cache cho XenForo 2

Giảm tải cho trang. Dĩ nhiên rồi.

File system cache

Dùng để lưu cache thành các file trực tiếp trên host. Cách này nhanh và tiện, nhưng khá ngốn dung lượng host (đặc biệt có 1 số hosting giới hạn số lượng file indexing thì cũng căng).

Đầu tiên vào File manager trên hosting (hoặc dùng FTP cũng được) tìm thư mục internal_data và tạo 2 thư mục cachepage_cache. Lúc này đường dẫn đến 2 thư mục này sẽ là

/home/user/public_html/internal_data/cache

Lưu ý phần /home/user/ nhé vì nó tuỳ thuộc vào từng hosting, nhớ check kĩ chỗ này kẻo lỗi.

Cuối cùng là mở file config.php (nằm trong thư mục src) và thêm đoạn này xuống cuối

$config['cache']['enabled'] = true;
$config['cache']['sessions'] = true;
$config['cache']['provider'] = 'Filesystem';
$config['cache']['config'] = ['directory' => '/home/user/public_html/internal_data/cache'];

$config['pageCache']['enabled'] = true;
$config['cache']['context']['page']['provider'] = 'Filesystem';
$config['cache']['context']['page']['config'] = ['directory' => '/home/user/public_html/internal_data/page_cache'];

Nếu thực hiện thành công sẽ thấy trong 2 folder cachepage_cache xuất hiện nhiều thư mục con (là cache đó ). Trong trường hợp muốn xoá, hãy xoá code trong file config.php trước khi xoá 2 folder này nhé.

Memcache

Hiệu quả hơn local cache phía trên, nhưng lại kén hosting vì host của bạn phải hỗ trợ thì mới dùng được. Cái này liên hệ bên cung cấp để biết xem có dùng được không nhé.

Các bạn vào config.php (ở đâu thì đọc phần trên bài viết là biết) và thêm đoạn sau

$config['cache']['enabled'] = true;
$config['cache']['sessions'] = true;
$config['cache']['provider'] = 'Memcached';
$config['cache']['config'] = ['servers' => [['localhost', xxxxx]]];

$config['pageCache']['enabled'] = true;
$config['cache']['context']['page']['provider'] = 'Memcached';
$config['cache']['context']['page']['config'] = ['servers' => [['localhost', xxxxx]]];

Cái đoạn xxx (không phải pỏn đâu ba) thì liên hệ bên cung cấp xem thông số Memcache là gì để điền vào nhé. Điền bậy lỗi web tự chịu.

Redis cache

Hiệu quả same same với Memcache, và vẫn yêu cầu hosting phải hỗ trợ.

$config['cache']['enabled'] = true;
$config['cache']['sessions'] = true;
$config['cache']['provider'] = 'Redis';
$config['cache']['config'] = ['host' => 'abc.x.y.z'];

$config['pageCache']['enabled'] = true;
$config['cache']['context']['page']['provider'] = 'Redis';
$config['cache']['context']['page']['config'] = ['host' => 'abc.x.y.z'];

Như trên, đoạn abc.x.y.z là phải đi xin bên cung cấp để điền vào.


Như các bạn thấy thì ở trong mỗi đoạn cache kia sẽ có 2 phần: cache (phần chính, dùng cho thành viên)page_cache (dùng cho khách). Lưu ý page_cache chỉ hỗ trợ XenForo 2.1 trở lên, nên ông nào còn 2.0 thì vui lòng nâng cấp.

Khi bạn thay đổi 1 nội dụng bài viết trên diễn đàn. Thành viên truy cập sẽ thấy ngay thay đổi bài viết, còn khách truy cập sẽ thấy dữ liệu trong cache, và khi hết thời gian tồn tại (mặc định là 300 giây), nó sẽ được cập nhật dữ liệu mới. Đây chính là cách để giảm tải cho web khá hiệu quả.

Nguyên văn đi copy được từ bên VNXF, cũng là nguồn bài này luôn =)))

Để thay đổi khoảng thời gian lưu cache thì bạn thêm dòng này vào và sửa cho phù hợp nhu cầu, nhưng mình nghĩ 300 giây là khá hợp lí rồi.

$config['pageCache']['lifetime'] = 300;

Lưu ý ta có thể dùng mỗi phần cache 1 loại cũng được, chẳng hạn phần chính dùng Local cache, phần cho khách thì dùng Memcache hoàn toàn có thể!

$config['cache']['enabled'] = true;
$config['cache']['sessions'] = true;
$config['cache']['provider'] = 'Filesystem';
$config['cache']['config'] = ['directory' => '/home/user/public_html/internal_data/cache'];

$config['pageCache']['enabled'] = true;
$config['cache']['context']['page']['provider'] = 'Memcached';
$config['cache']['context']['page']['config'] = ['servers' => [['localhost', xxxxx]]];

Bài sau sẽ hướng dẫn cache nâng cao khi viết add-on.