Sửa lỗi Browser Cache TTL trong OpenLiteSpeed

Chẳng biết có phải OpenLiteSpeed (OLS) cố tình không?! nhưng lỗi này tôi không thấy trên bản trả phí Enterprise! Kể cả họ cố tình thì tôi cũng không trách, bản free mà, chứ OLS ngon quá, không có bất cứ phiền phức nào thì ai mua bản trả phí của họ!


Xem video nếu bạn muốn:


Khi dùng plugin LiteSpeed Cache, ở phần Cache > Browser họ cho phép chúng ta điều chỉnh thời gian cache phía trình duyệt, thường nên để 6 tháng hoặc một năm:

Trong ảnh trên là cache một năm, 31557600 là thời gian một năm tính theo giây
Trong ảnh trên là cache một năm, 31557600 là thời gian một năm tính theo giây

Tuy nhiên thực tế các tài nguyên chỉ được cache có một tuần. Để kiểm tra, với trình duyệt Chrome bạn nhấn tổ hợp phím Ctrl + Shift + I > Network > Disable cache > Img rồi tải lại trang.

Tiếp đó bạn click vào một ảnh cụ thể trên trang, vào phần Headers, tìm đến cache-control bạn sẽ thấy thời gian cache trình duyệt vẫn chỉ được có một tuần mà thôi (max-age = 604800 giây = một tuần):

Cache-control có được 1 tuần

OpenLiteSpeed biết rõ điều này! Khi chúng ta vào phần Cache > Browser, ở ngay phía trên là thông báo:

Lưu ý: người dùng OpenLiteSpeed hãy kiểm tra cài đặt headers tùy chỉnh / OpenLiteSpeed users please check this: Setting Up Custom Headers.

Dưới đây tôi sẽ chỉ các bạn cách khắc phục lỗi này.


Đầu tiên bạn phải mở cổng 7080 cho OpenLiteSpeed, nếu đang dùng CyberPanel thì bạn vào phần Firewall rồi làm như ảnh dưới:

mở cổng 7080

Sau đó bạn truy cập https://IP:7080 hoặc theo tên miền host name (https cho trang quản trị) mà bạn cài trước đó (https://ten-mien-cua-ban.com:7080) để vào phần WebAdmin Console của OLS.

Nó sẽ yêu cầu bạn đăng nhập như thế này:

Mật khẩu ở phần này độc lập với mật khẩu đăng nhập CyberPanel cũng như Console của VPS. Để lấy lại mật khẩu ở phần này, bạn làm như sau.

Đăng nhập vào console của VPS rồi gõ dòng dưới đây:

/usr/local/lsws/admin/misc/admpass.sh

Tiếp theo bạn nhập username và pass cho nó. Pass bạn nên gõ sẵn ở ngoài rồi copy-paste vào cho đỡ nhầm. Vì pass gõ ở đây nó không hiển thị dấu gì cho mọi người nhận biết cả.

OK, sau đó chúng ta dùng user và pass vừa có để đăng nhập vào cổng 7080.

Tiếp đến bạn vào Virual Hosts, rồi click vào hình kính lúp tương ứng với tên miền của bạn:

Click vào đây để thấy hình to rõ ràng hơn

Vào context:

vào context

Nhần vào dấu cộng ngoài cùng bên tay phải, rồi làm như hình dưới.

static

Đến phần chính rồi, bạn nhập thông tin như sau:

Đây là các đoạn mã copy-paste để bạn làm cho nhanh.

URI:

exp:^.*(woff|woff2|jpg|jpeg|png|css|js|gif|svg|webp)$

Location:

$DOC_ROOT/$0

Expires By Type:

application/javascript=A15552000, text/css=A15552000

Header Operations:

unset Cache-control
set Cache-control public, max-age=15552000

Cái thời gian 15552000 là số giây của 6 tháng. Nói chung khoảng thời gian đó là ổn rồi, ai thích một năm thì để là 31536000- và đây cũng là con số tối đa có thể của cache-control. Ngoài ra, bạn nhớ chọn Accessible & Enable ExpiressYes.

Xong xuôi bạn nhấn Save:

lưu

Cuối cùng bạn khởi động lại LiteSpeed nữa là xong.

khởi động lại OpenLiteSpeed

OK rồi, cache trình duyệt sẽ đúng như ý chúng ta:

Cache trình duyệt đã như mong muốn

Cập nhật: ngoài vấn đề cache phía trình duyệt, OpenLiteSpeed webserver còn cố tình bỏ qua cache qua nguồn giới thiệu, đây là vấn đề nghiêm trọng với các website có lưu lượng truy cập lớn qua các nguồn như Facebook hoặc/và Google Adwords. Bạn cũng nên sửa để đảm bảo website có tốc độ tốt nhất.

Giờ là lúc nói lời tạm biệt.

Xem thêm: Hướng dẫn dùng CyberPanel cơ bản