Categories Cache Trình duyệt

Cải thiện tỷ lệ truy cập cache HTML bằng cách bỏ qua chuỗi truy vấn (query string)

Query string có thể làm chậm website vì bỏ qua cache

Tôi sẽ tiết lộ bí mật rất quan trọng cho mọi người ngay bây giờ:

Không phải vì trang của bạn có được điểm số cao nhất hoặc thời gian tải toàn trang nhanh nhất (trên các công cụ kiểm tra) thì điều đó đồng nghĩa với việc người dùng thực sự của bạn có được trang có tốc độ tốt nhất đâu nhé.

Bạn sẽ thiết lập caching thông qua plugin cache hoặc các rule của Cloudflare page để cache các trang HTML, nhưng bạn có chắc các trang đã được cache này sẽ được phân phối tới khách ghé thăm website của bạn?

Trong trường hợp của tôi, khách ghé thăm từ Facebook KHÔNG nhận được các trang đã được cache.

Vấn đề ở đây là Facebook gắn thêm chuỗi truy vấn “fbclid” vào tất cả các liên kết từ Facebook. Chuỗi này là duy nhất với từng người dùng.

trang được gắn thêm fbclid

Vì thế bất cứ khi nào có “fblid” mới, họ sẽ nhận được trang chưa được cache!!!


Cách bỏ qua chuỗi truy vấn trong các plugin phổ biến

1. Trong plugin LiteSpeed Cache

Plugin LiteSpeed Cache thực hiện cache chuỗi truy vấn (query strings) theo mặc định. Bạn có thể loại trừ từ khóa nhất định bằng cách truy cập vào LiteSpeed Cache > Cache > Drop Query String:

loại bỏ chuỗi truy vấn

Tôi thường bỏ qua các chuỗi truy vấn sau:

  • fbclid
  • ref
  • utm*

Đáng tiếc là với OpenLiteSpeed webserver các cài đặt này trên LiteSpeed cache không có tác dụng (đây là vấn đề tôi mới phát hiện gần đây nhờ một bạn trên FB báo cho biết / tháng một năm 2021, may là cách khắc phục cũng tương đối dễ).

2. Trong plugin WP Rocket

WP Rocket tự động bỏ qua các chuỗi truy vấn sau:

  • Tất cả UTM tags (utm*)
  • fb_action_ids
  • fb_action_types
  • fb_source
  • fbclid
  • _ga
  • gclid
  • age-verified
  • ao_noptimize
  • usqp
  • cn-reloaded

Bất kỳ chuỗi truy vấn nào khác, chẳng hạn như s=something, country=India, ref=google.com vân vân sẽ đều được phục vụ dưới dạng các trang chưa được cache. Vì thế nếu bạn có bất kỳ chuỗi truy vấn tùy chỉnh nào nó sẽ bị bỏ qua, bạn sẽ cần tải plugin hỗ trợ của họ về để khắc phục vấn đề này.

Bạn có thể tham khảo thêm bài viết về về cache truy vấn của WP Rocket ở đây.

3. Trong plugin Swift Performance

Swift Performance theo mặc định bỏ qua “fbclid” và “gclid“. Nó cũng có tùy chọn cho phép bỏ qua tất cả các chuỗi truy vấn khác, nhưng điều đó sẽ làm hỏng trang tìm kiếm và các trang tương tự.

Họ không có tùy chọn bỏ qua bằng cách sử dụng từ khóa.


Google Analytics, Facebook pixel và các ứng dụng theo dõi khác sẽ vẫn hoạt động bình thường chứ?

Các mã theo dõi như Google Analytics, Facebook Pixel, vân vân sử dụng các tham số truy vấn tương tự cho nhiều mục đích khác nhau. Vì bạn không loại bỏ chúng, các script vẫn nhận được chúng từ URL và làm điều cần thiết.

Lưu ý: Với Cloudflare, điều này không áp dụng bởi vì bạn sẽ cần loại bỏ các chuỗi truy vấn.


Caching toàn trang của Cloudflare

Nếu bạn triển khai caching toàn trang thông qua các rule trong Cloudflare, một vấn đề tương tự sẽ xuất hiện. Hầu hết các truy cập của bạn từ Facebook và các website khác với các chuỗi truy vấn này sẽ nhận được các trang không được cache.

Để sửa điều này, bạn cần thêm một Page Rule để loại bỏ các chuỗi truy vấn như vậy.

Dưới đây là ví dụ về rule dùng để loại bỏ chuỗi truy vấn “fbclid“:

Rule của Cloudflare

Điều này nói với Cloudflare rằng nó cần chuyển hướng URL kiểu https://example.com/hire-me?fbclid=xxxxxx thành https://example.com/hire-me.

Cảm ơn Gulshan Kumar đã post mẹo này trong group về tăng tốc WordPress của WPSpeedMatters.


Kết luận

Ở chế độ mặc định, WP Rocket và Swift Performance xử lý điều này thực sự tốt. Trong LiteSpeed Cache, bạn chỉ cần thêm các từ khóa cần thiết vào danh sách loại trừ.

Dù vậy, nếu bạn sử dụng caching toàn trang của Cloudflare, bạn có thể cần mua thêm Page Rules để thiết lập nó.

(Dịch từ bài viết: Improving HTML Cache Hit Ratio by Ignoring Query Strings, tác giả: Gijo Varghese)

Back to Top