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
880
Được Like
1,469
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​
 

Dautulagi

Thượng Đế
Tham gia
23/11/2021
Bài viết
13
Được Like
0
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.
 

dongphutien

Thượng Đế
Tham gia
26/11/2021
Bài viết
10
Được Like
0
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)


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)


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


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ình như sai ở vòng if
 

sanhpv

Thượng Đế
Tham gia
14/07/2020
Bài viết
85
Được Like
8
không biết cái thứ thứ 2, 3, mình dùng vps cài plesk panel, thì liên hệ ở đâu xin thông số vậy
còn cái localhost', 11211 thì xem ở đâu

cái thứ 3 redis là địa chỉ ip của vps đúng không mn : host' => '127.0.0.1
 

2-tek

Thượng Đế
Tham gia
27/06/2015
Bài viết
344
Được Like
283
Góp ý thêm, Nếu xài OPCache và Memcached thì không nên xài Redis, Redis trên Share host không có tác dụng, và Redis nó sẽ không hoạt động chung với Memcached.

Nếu các bạn xài VPS thì cấu hình nuột XenForo:
- Apache / OPcache / Memcached / Varnish / Cloudflare
- Nginx / OPcache / Redis (trả phí) / Varnish / Cloudflare
 

sanhpv

Thượng Đế
Tham gia
14/07/2020
Bài viết
85
Được Like
8
Góp ý thêm, Nếu xài OPCache và Memcached thì không nên xài Redis, Redis trên Share host không có tác dụng, và Redis nó sẽ không hoạt động chung với Memcached.

Nếu các bạn xài VPS thì cấu hình nuột XenForo:
- Apache / OPcache / Memcached / Varnish / Cloudflare
- Nginx / OPcache / Redis (trả phí) / Varnish / Cloudflare
redis thì trả phí cho ai bác, e thấy chỉ cần thêm dòng code vào file config, thì redis tính phí kiểu gì nhỉ, không biết dùng bản null có cài đc 2 cái cache trên không bác nhỉ,
 

2-tek

Thượng Đế
Tham gia
27/06/2015
Bài viết
344
Được Like
283
redis thì trả phí cho ai bác, e thấy chỉ cần thêm dòng code vào file config, thì redis tính phí kiểu gì nhỉ, không biết dùng bản null có cài đc 2 cái cache trên không bác nhỉ,
Bạn không cấu hình Cache trên server để nó enable thì bạn thêm code trong file config có tác dụng gì?

Redis bản Pre bạn liên hệ tới support của nó, nó sẽ cho bạn link down Redis Pre (400$)
 

sanhpv

Thượng Đế
Tham gia
14/07/2020
Bài viết
85
Được Like
8
Bạn không cấu hình Cache trên server để nó enable thì bạn thêm code trong file config có tác dụng gì?

Redis bản Pre bạn liên hệ tới support của nó, nó sẽ cho bạn link down Redis Pre (400$)
tưởng xenforo là nó cài sẵn rồi chứ nhỉ, thế mình dùng panel là plesk thì mình cài trên plesk à bạn
đây thấy bài hướng dẫn của xenforo có thấy nó bảo cài redis trên server đâu nhỉ https://xenforo.com/docs/xf2/cache/
 

huynhcvcx

Thượng Đế
Tham gia
12/02/2022
Bài viết
6
Được Like
5
visit nhiều chứ lèo tèo vài người thì cái này vô dụng, tạo cached thôi cũng làm chậm hệ thống thêm
 

Xehoi

Thượng Đế
Tham gia
08/02/2022
Bài viết
65
Được Like
6
visit nhiều chứ lèo tèo vài người thì cái này vô dụng, tạo cached thôi cũng làm chậm hệ thống thêm
Cái này cũng đúng, bữa trc mình thử cài Redis xong check thấy còn chậm hơn ko cài. Nhưng Memcache thì ổn hơn. Giờ thì visit trang nào cũng lèo tèo cả nên vps cấu hình khỏe tí thì chỉ sợ ko có view :D
 

2-tek

Thượng Đế
Tham gia
27/06/2015
Bài viết
344
Được Like
283
tưởng xenforo là nó cài sẵn rồi chứ nhỉ, thế mình dùng panel là plesk thì mình cài trên plesk à bạn
đây thấy bài hướng dẫn của xenforo có thấy nó bảo cài redis trên server đâu nhỉ https://xenforo.com/docs/xf2/cache/
Tùy vào nhu cầu có cần cài hay không, mà 1 web duy nhất thì việc gì phải xài Plesk, nội Plesk cũng làm cho Server load chậm thêm một chút rồi.

Bạn nên học 1 khóa quản trị mạng hoặc 1 khóa Linux để còn có thể tự Build hệ thống cho mình, chứ hoc lỏm trên mạng chả giải quyết được gì cả, toàn râu ông nọ chắp cằm bà kia, hiệu năng không như mong muốn. Bạn phải hiểu được cái cốt lõi của từng cái.
 

sanhpv

Thượng Đế
Tham gia
14/07/2020
Bài viết
85
Được Like
8
Tùy vào nhu cầu có cần cài hay không, mà 1 web duy nhất thì việc gì phải xài Plesk, nội Plesk cũng làm cho Server load chậm thêm một chút rồi.

Bạn nên học 1 khóa quản trị mạng hoặc 1 khóa Linux để còn có thể tự Build hệ thống cho mình, chứ hoc lỏm trên mạng chả giải quyết được gì cả, toàn râu ông nọ chắp cằm bà kia, hiệu năng không như mong muốn. Bạn phải hiểu được cái cốt lõi của từng cái.
trước giờ toàn dùng panel, web thì load khá nhanh, nhưng vấn đề đang có 40 50user online cùng lúc cpu đã 70 80% rồi, đang tìm cách để giảm tải cpu mà chưa tìm ra, web đã cài cloudfare
 

2-tek

Thượng Đế
Tham gia
27/06/2015
Bài viết
344
Được Like
283
trước giờ toàn dùng panel, web thì load khá nhanh, nhưng vấn đề đang có 40 50user online cùng lúc cpu đã 70 80% rồi, đang tìm cách để giảm tải cpu mà chưa tìm ra, web đã cài cloudfare
Nó còn phụ thuộc vào I/O và Portspeed nữa, nhiều yếu tố chứ đâu riêng gì server, cài CloudFlare nhưng đã cấu hình chuẩn hết CF chưa hay chỉ bật cái đám mây lên là xong, trong CF còn có cả Origin Pull, rồi các chức năng Agro, Speed Apps Dev... bạn đã hiểu hết về CF chưa.

Panel chỉ là cái để quản trị cho dể dàng, chứ không phải tăng tốc Server, muốn có hệ thống Optimize bạn phải hiểu được Source code từng loại nó phù hợp vào hệ thống nào. Ví dụ hệ thống dành cho WordPress mà để chạy XenForo thì làm sao mà được...
 

huynhcvcx

Thượng Đế
Tham gia
12/02/2022
Bài viết
6
Được Like
5
trước giờ toàn dùng panel, web thì load khá nhanh, nhưng vấn đề đang có 40 50user online cùng lúc cpu đã 70 80% rồi, đang tìm cách để giảm tải cpu mà chưa tìm ra, web đã cài cloudfare
Tay ngang thì dùng hostvn script cho nhanh, mua con VPS nữa, bảo đảm ngon
 

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

XenForo 1 XenForo 2
Translate by PVS


Nhà Tài Trợ

Mút Xốp Không Gian
pallet Thịnh Phát
Điện Lạnh Thịnh Phát
Top Bottom