OpenLiteSpeed không cache với trang có query, đây có thể là vấn đề rất nghiêm trọng với các trang có lưu lượng truy cập lớn qua nguồn giới thiệu (thí dụ facebook)

Chia sẻ thoải mái, không giấu nghề có nhiều lợi ích, tôi tiếp xúc được nhiều anh chị em quan tâm đến vấn đề tăng tốc độ website nói chung và đặc biệt là WordPress nói riêng.

Mấy hôm trước, bạn Trần Xuân Bảo có chia sẻ một phát hiện cực kỳ quan trọng: OpenLiteSpeed webserver không tạo chuyển hướng về trang được cache sẵn khi truy cập qua nguồn giới thiệu (hay đi kèm với query string), ví dụ như Facebook, Google Adwords,…May là qua nguồn máy tìm kiếm Google thì không bị.

Bình thường phần đó bạn sẽ thiết lập ở mục này trong plugin LiteSpeed cache (Cache > Drop Query String) để cải thiện tỷ lệ truy cập cache:

bỏ qua query vào thẳng cache

Họ có công khai điều này?

Có, nhưng có lẽ nhiều người không để ý, bao gồm cả tôi khi đã sử dụng LiteSpeed cả năm trời!

Trong dòng ngay bên dưới chuỗi query string là đoạn sau:

Ignore certain query strings when caching. (LSWS v5.2.3+ required)

Tức là bản này yêu cầu LiteSpeed Webserver từ 5.2.3 đổ lên thì mới được. Đáng ra họ nên nói rõ ràng hơn là tính năng này không khả dụng trên OpenLiteSpeed, hoặc ghi rõ là chữ LiteSpeed Enterprise ra. LSWS cảm thấy như chỉ chung cả hai phiên bản, rất dễ gây nhầm lẫn.


Kiểm tra thực tế

Ví dụ như bài viết 21 cách tăng tốc WordPress là trang đã được cache vào thời điểm 2021-01-15 21:13:11 (năm-tháng-ngày giờ:phút:giây).

trang đã được cache

Nhưng khi tôi thử truy cập nó khi đưa link qua Facebook (sẽ có query dạng fbclid ví dụ: https://speed.family/tang-toc-wordpress/?fbclid=IwAR1DZ3YOrG6RdVPpPKohfzg04YmZTtSIJBed3pCZ8s0wu71Mp65OJl9LLXk) chúng ta sẽ thấy nó sẽ được cache mới lại cho phiên đó thay vì sử dụng nội dung cache trước đó:

trang đã được cache nhưng vẫn phải cache lại dù fbclid đã được bổ sung vào danh sách query cần bỏ qua

Hậu quả của điều này là: tốc độ truy cập sẽ chậm đi khi truy cập qua nguồn giới thiệu, vì lúc đấy nó là trang động (dynamic) chứ không phải trang tĩnh (static). Đặc biệt thành vấn đề với các website có lưu lượng truy cập cao.

LiteSpeed Enterprise hoặc QUIC cloud (kể cả khi phối hợp với OpenLiteSpeed) không gặp vấn đề này.

Đây quả là chiêu rất quái của LiteSpeed! Họ làm thế gần như buộc người dùng có nhiều truy cập giới thiệu chỉ có hai lựa chọn:

  • Nâng cấp webserver lên bản trả phí LiteSpeed Enterprise;
  • Sử dụng QUIC cloud (cũng tốn phí CDN khi bạn dùng nhiều, được cái nó khá rẻ).

Một vấn đề khác có thể bạn quan tâm là lỗi cache phía trình duyệt của OpenLiteSpeed (khả năng có cũng là cố tình).

Cơ sở để OpenLiteSpeed triển khai hạn chế này:

  • Để gia tăng khoảng cách chất lượng với bản trả phí webserver LiteSpeed Enterprise;
  • Những trang có nhiều lưu lượng giới thiệu có query, khả năng không nhỏ cũng là những trang có khả năng đầu tư chi phí.

Khắc phục điều này thế nào

Tôi khắc phục điều này bằng cách kết hợp với proxy của Cloudflare (bật đám mây vàng). Và sử dụng Page Rules như thế này (khả dụng ngay cả trên bản miễn phí của Cloudflare):

Khi đó URL có fbclid sẽ được chuyển hướng về trang đã được cache.

Xin chào & hẹn gặp lại các bạn trong bài viết khác.

Leave a Comment