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.
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.
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.

