Hướng dẫn Thiết lập cache, get cache cho Xenforo 2

Blue

Admin - Founder
Thành viên BQT
Tham gia
25/02/2015
Bài viết
876
Được Like
1,458
Thấy bài viết hay nên chia sẻ với anh em.

Thiết lập xenforo 2 cache giúp tiết kiệm thời gian xử lý và truy vấn cơ sở dữ liệu, giúp diễn đàn load nhanh hơn. Cấu hình cache được lưu trong tệp src/config.php. Xenforo hỗ trợ nhiều loại cache khác nhau. Ở đây tôi sẽ hướng dẫn bạn 2 loại cache thông dụng nhất, và dễ thực hiện nhất.

1. File system cache
(Lưu cache vào các tập tin trên host của bạn, dễ thực hiện nhất)

cache.jpg

Các thực hiện:
Truy cập vào Quản lý tập tin của Cpanel, nhận biết được đường dẫn đến thư mục tập tin của mình (như hình trên là /home/user).
Tạo 2 thư mục tên cache và page_cache bên trong thư mục internal_data.
Lấy đường dẫn đến thư mục đó, thường có dạng như sau: /home/user/public_html/internal_data/cache
Mở file src/config.php lên và thêm đoạn code sau đây vào cuối cùng.
PHP:
$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'];

Lưu ý phải nhập đúng đường dẫn đến thư mục cache và page_cache.
Save lại, và truy cập vào web vài lần để thấy hiệu quả.
Nếu cấu hình đúng, sẽ thấy trong các thư mục cache tự động phát sinh ra nhiều thư mục con.
Khi đã bật cache thì không được xóa các file trong các thư mục cache, nếu không sẽ phát sinh lỗi.
Để tắt cache chỉ cần xóa bỏ các dòng đã thêm vào bên trên, sau đó xóa bỏ thư mục cache đã tạo.

2. Memcached
(Memcached giúp tốc độ load nhanh hơn, nhưng phụ thuộc vào nhà cung cấp hosting của bạn, và những host cấu hình yếu không nên dùng)

memcached.png

Cách thực hiện:
Liên hệ nhà cung cấp hosting xin thông số cấu hình Memcached.
Mở file src/config.php lên và thêm đoạn code sau đây vào cuối cùng.
PHP:
$config['cache']['enabled'] = true;
$config['cache']['sessions'] = true;
$config['cache']['provider'] = 'Memcached';
$config['cache']['config'] = ['servers' => [['localhost', 11211]]];

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

Thông số localhost và 11211 bạn cần liên hệ nhà cung cấp hosting để hỏi.
Save lại, và truy cập vào web vài lần để thấy hiệu quả.
Ngoài ra còn nhiều loại cache khác, nhưng nó đòi hỏi host của bạn phải hỗ trợ.
Chỉ sử dụng 1 cấu hình cache, không nên dùng nhiều loại.

3. Redis cache

Redis-1.png

Cách thực hiện:
Liên hệ nhà cung cấp hosting xin thông số cấu hình Redis.
Mở file src/config.php lên và thêm đoạn code sau đây vào cuối cùng.
PHP:
$config['cache']['enabled'] = true;
$config['cache']['sessions'] = true;
$config['cache']['provider'] = 'Redis';
$config['cache']['config'] = ['host' => '127.0.0.1'];

$config['pageCache']['enabled'] = true;
$config['cache']['context']['page']['provider'] = 'Redis';
$config['cache']['context']['page']['config'] = ['host' => '127.0.0.1'];

Trong cấu hình cache mình đã phân thành 2 phần:
Phần đầu: Đó là cache chính, sử dụng cho hệ thống và thành viên.
Phần sau: Đó là pageCache, sử dụng cho khách truy cập, giúp tối ưu tốc độ load trang. Và chỉ hỗ trợ từ XF 2.1

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 cũ 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ả.

Để thay đổi thời gian tồn tại của pageCache, ta thêm vào cuối đoạn mã sau:
PHP:
$config['pageCache']['lifetime'] = 300;
Trong đó 300 là số giây pageCache tồn tại, quá thời hạn đó nó sẽ được tạo lại mới.

Hai phần cache này ta có thể cấu hình mỗi phần sử dụng 1 loại cache vẫn được, ví dụ:
PHP:
$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', 11211]]];

Phần nâng cao (phát triển Add-ons)
Sau khi đã cấu hình thành công cache, nếu bạn đang tự phát triển add-ons cho riêng mình, bạn có thể tận dụng chức năng cache để lưu trữ dữ liệu, giúp giảm tải cho hệ thống, nhất là các truy vấn đến cơ sở dữ liệu.

Để lưu dữ liệu vào cache ta dùng cú pháp sau:
PHP:
// Kiểm tra cache có kích hoạt trên hệ thống
$cache = \XF::app()->cache();
// Nếu cache tồn tại, lưu giá trị vào
if ($cache) {
    $cache->save($key, $data, 300);
}
// $key là tên của cache mình muốn tạo, được dùng để gọi lại.
// $data là dữ liệu mình muốn lưu vào, có thể lưu mảng vào.
// 300 là thời gian tồn tại của cache này, tính bằng giây

Để lấy dữ liệu trong cache ra, ta dùng cú pháp sau:
PHP:
$cache = \XF::app()->cache();

if ($cache) {
    $data = $cache->fetch($key);
    if ($data) {
        // Nếu có dữ liệu trả về, ta dùng dữ liệu này để xử lý tiếp
    }
}
// $key là tên của cache mình muốn lấy dữ liệu.

Theo Xenvn.com​
 

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

XenForo 1 XenForo 2
Translate by PVS

Hosting Giá rẻ

hosting free
hosting free
Top Bottom