SENSEL — AI sáng tạo & trải nghiệm nội dung số
HƯỚNG DẪN SENSEL

Dynamic, static và session rules trong Manifest V3: chọn loại nào?

Static, dynamic và session rules trong Manifest V3 khác nhau ở vòng đời và cách cập nhật. Cách chọn loại rule cho bộ lọc nền, cài đặt người dùng và trạng thái tạm thời.

Trả lời nhanhStatic rules phù hợp bộ quy tắc nền tảng được đóng gói, kiểm thử và phát hành cùng extension. Dynamic rules được extension thêm/xóa khi đang chạy và tiếp tục tồn tại qua phiên trình duyệt cũng như lần nâng cấp extension. Session rules lại chỉ sống trong phiên. Chọn loại rule theo vòng đời cấu hình, không phải theo cảm giác loại nào “mạnh hơn”.
Minh họa ba lớp static, dynamic và session rules trong Manifest V3
Ba loại rule dùng cùng DNR nhưng có vòng đời khác nhau, quyết định cách cấu hình tồn tại sau restart và update.

1. Ba lớp rule trong declarativeNetRequest cần phân biệt

Manifest V3 dùng declarativeNetRequest (DNR) để extension khai báo cách chặn, cho phép, chuyển hướng hoặc sửa request/headers trong phạm vi API. Tài liệu Chrome tách rõ static rulesets, dynamic rules và session rules. Cả ba dùng cùng mô hình rule nhưng khác nơi lưu và vòng đời.

Nếu chỉ nói “rule Manifest V3” mà không nói loại nào, rất dễ hiểu nhầm khi debug. Một rule có thể biến mất vì nó là session rule, hoặc vẫn còn sau restart vì nó là dynamic rule.

2. Static rules: đi cùng phiên bản extension

Static rules được lưu trong file JSON và khai báo qua manifest. Chúng được đóng gói, cài và cập nhật cùng extension. Cách này phù hợp cho bộ lọc nền tảng mà nhà phát triển muốn review, test và version-control như một phần của release.

Chrome cho phép nhiều static ruleset và có giới hạn về số ruleset có thể bật đồng thời cũng như số rule bảo đảm. Các con số có thể thay đổi theo phiên bản Chrome, nên khi thiết kế cần đọc tài liệu hiện hành thay vì chép một quota cũ vào code.

3. Dynamic rules: thay đổi khi chạy và tồn tại qua lần mở lại Chrome

Dynamic rules được quản lý bằng updateDynamicRules(). Chúng hữu ích cho lựa chọn người dùng, whitelist/allowlist theo site hoặc cấu hình phát sinh sau khi extension đã được cài mà không cần phát hành lại toàn bộ gói.

Điểm quan trọng là dynamic rules tồn tại qua browser session và extension upgrade. Vì vậy khi người dùng báo “đã khởi động lại mà ngoại lệ vẫn còn”, đó có thể là hành vi đúng của dynamic rule chứ không phải lỗi cache.

4. Session rules: phù hợp thay đổi tạm thời

Session rules cũng được cập nhật bằng JavaScript nhưng bị xoá khi trình duyệt đóng và khi extension cài phiên bản mới. Chúng phù hợp với trạng thái ngắn hạn, phép thử hoặc rule chỉ nên sống trong phiên hiện tại.

Nếu một thiết lập người dùng cần tồn tại lâu dài mà lại được triển khai bằng session rule, họ có thể thấy hành vi “mất cài đặt” sau restart. Ngược lại, dùng dynamic rule cho một ngoại lệ tạm thời có thể khiến ngoại lệ ở lại lâu hơn dự kiến.

5. Chọn static hay dynamic theo câu hỏi vận hành

Hãy hỏi: rule có phải một phần của sản phẩm phát hành hay là lựa chọn riêng của người dùng? Có cần thay đổi mà không update extension không? Có cần tồn tại qua restart không? Có cần audit theo version không? Bốn câu hỏi này thường đủ để định hướng loại rule.

Với blocker, bộ rule chung có thể nằm ở static ruleset; ngoại lệ do người dùng tạo có thể dùng dynamic rules; phép thử ngắn hạn có thể dùng session rules. Đây là mô hình tham khảo, không phải bắt buộc cho mọi kiến trúc.

6. Cách debug khi rule không còn tác dụng

Xác định rule thuộc loại nào, kiểm tra ruleset có enabled không, kiểm tra host permissions và điều kiện URL, sau đó kiểm tra quota/limit. Đừng mặc định lỗi nằm ở “Manifest V3 yếu hơn”; nhiều lỗi thực tế đến từ condition không match hoặc ruleset đang tắt.

Khi thử sửa, thay một biến mỗi lần và dùng công cụ debug/test của extension. Với static rules, lỗi định dạng cần được phát hiện trong quá trình phát triển thay vì để tới production.

7. Intent của bài này khác bài “static ruleset vs dynamic rules” ở điểm nào

Bài này tập trung vào vòng đời và quyết định kiến trúc trong Manifest V3, gồm cả session rules và quy trình debug. Nếu bạn chỉ cần bảng so sánh nhanh giữa static ruleset và dynamic rules trong Chrome extension, bài liên quan bên dưới đi thẳng vào hai loại đó.

Việc tách intent giúp tránh biến nhiều URL thành cùng một câu trả lời. Một URL nên có một nhiệm vụ rõ ràng thay vì lặp lại cùng nội dung bằng tiêu đề khác.

Cài SENSEL Adblock và kiểm tra trên chính máy của bạn

SENSEL là tiện ích chặn quảng cáo cho Google Chrome Desktop, tập trung giảm quảng cáo gây gián đoạn khi xem YouTube. Cài từ Chrome Web Store chính thức, sau đó kết nối tài khoản nếu bạn muốn sử dụng quyền lợi hoặc gói phù hợp. Mỗi tài khoản hỗ trợ tối đa 2 thiết bị đang hoạt động.

Xem tính năng, phạm vi hỗ trợ và gói sử dụng

Nguồn chính thức và tài liệu tham khảo

Bài được đối chiếu với tài liệu chính thức hoặc tài liệu gốc của nhà cung cấp tại thời điểm cập nhật 16/09/2026. Chrome, Google, YouTube và extension có thể thay đổi theo phiên bản; khi áp dụng hãy ưu tiên tài liệu hiện hành.

  1. Chrome for Developers — declarativeNetRequest API
  2. Chrome for Developers — Manifest declarative_net_request
  3. Chrome for Developers — Declare permissions

Câu hỏi thường gặp

Dynamic rules có mất khi tắt mở Chrome không?

Không. Tài liệu Chrome cho biết dynamic rules tồn tại qua browser session và extension upgrade.

Static rules có thay đổi được khi đang chạy không?

Bạn có thể bật/tắt static ruleset theo API trong phạm vi hỗ trợ, nhưng nội dung rule được đóng gói cùng extension.

Session rules dùng khi nào?

Khi rule chỉ cần sống trong phiên hiện tại và không nên tồn tại sau khi Chrome đóng.