Tutorial 2x Cách Thiết Lập Cache Đơn Giản Cho Xenforo 2

hoangnhanpro

Thượng Đế
Tham gia
16/03/2015
Bài viết
23
Được Like
22
[HNP]-xenforo-2-cache.png

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 của chúng ta 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. Nhưng với các bạn sử dụng hosting cơ bản thì "File system cache" là lựa chọn dễ thực hiện nhất.
File system cache
nghĩa là cache sẽ được lưu thành các tập tin trên host của bạn.

cpanel-file-manager.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 cachepage_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 cachepage_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ỏ 2 thư mục cache đã tạo.
Ta thấy trong cấu hình cache 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.

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

hoangnhanpro

Thượng Đế
Tham gia
16/03/2015
Bài viết
23
Được Like
22
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.
 

thahtrung06

Thượng Đế
Tham gia
12/11/2019
Bài viết
612
Được Like
234
Cảm ơn bạn đã chia sẻ, bài viết rất hay và hữu ích.
 

Blue

Admin - Founder
Thành viên BQT
Tham gia
25/02/2015
Bài viết
869
Được Like
1,432
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.

Cái này hay nè, cảm ơn bạn đã chia sẻ, website bên bạn phát triển nhanh thật á :)
 

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

XenForo 1 XenForo 2
Translate by PVS

Hosting Giá rẻ

hosting free
hosting free
Top Bottom