DNS RobotDNS Propagation Checker
Trang ChủDNSWHOISIPSSL
DNS RobotDNS Propagation Checker

Công cụ kiểm tra DNS thế hệ mới

Chính Sách Bảo MậtĐiều Khoản Dịch VụVề Chúng TôiBlogLiên hệ

Công Cụ DNS

Tra Cứu DNSTên Miền Sang IPTra Cứu NSTra Cứu MXTra Cứu CNAMEXem tất cả

Công Cụ Email

Kiểm Tra Bản Ghi SPFKiểm Tra DMARCKiểm Tra DKIMKiểm Tra SMTPPhân Tích Header EmailXem tất cả

Công Cụ Website

Tra Cứu WHOISKiểm Tra Tên MiềnTìm Tên Miền PhụPhát Hiện CMSPhân Tích Liên KếtXem tất cả

Công Cụ Mạng

Công Cụ PingTracerouteKiểm Tra CổngKiểm Tra Header HTTPKiểm Tra Chứng Chỉ SSLXem tất cả

Công Cụ IP

Tra Cứu IPIP Của Tôi Là GìKiểm Tra Danh Sách Đen IPIP Sang HostnameTra Cứu ASNXem tất cả

Công Cụ Tiện Ích

Quét Mã QRTạo Mã QRDịch Mã MorseChuyển Đổi Văn Bản Sang Nhị PhânTạo Chữ NhỏXem tất cả
© 2026 DNS Robot. Phát triển bởi: ❤ Shaik Brothers
Tất cả hệ thống hoạt động bình thường
Made with
Home/Blog/ERR_CACHE_MISS: Nguyên Nhân & Cách Khắc Phục (Chrome)

ERR_CACHE_MISS: Nguyên Nhân & Cách Khắc Phục (Chrome)

Shaik Vahid27 thg 2, 20268 min read
Hướng dẫn sửa lỗi ERR_CACHE_MISS với màn hình lỗi cache Chrome và các giải pháp từng bước cho người dùng và nhà phát triển
Hướng dẫn sửa lỗi ERR_CACHE_MISS với màn hình lỗi cache Chrome và các giải pháp từng bước cho người dùng và nhà phát triển

Key Takeaway

ERR_CACHE_MISS là lỗi xuất hiện trên Chrome khi trình duyệt cố tải một trang từ bộ nhớ đệm nhưng mục đó không tồn tại — thường xảy ra nhất sau khi gửi biểu mẫu rồi nhấn nút quay lại hoặc làm mới. Đối với người dùng, xóa bộ nhớ đệm và hard refresh thường giải quyết được. Đối với nhà phát triển, mẫu Post/Redirect/Get (PRG) loại bỏ lỗi này vĩnh viễn.

ERR_CACHE_MISS Là Gì?

ERR_CACHE_MISS là mã lỗi nội bộ của Chromium (lỗi -400), có nghĩa là trình duyệt đã cố lấy một trang từ bộ nhớ đệm cục bộ nhưng mục đó không tồn tại. Đây không phải mã trạng thái HTTP — nó không bao giờ rời khỏi trình duyệt của bạn. Lỗi được định nghĩa trong mã nguồn Chromium (net_error_list.h) là: "The cache does not have the requested entry." (Bộ nhớ đệm không có mục được yêu cầu.)

Lỗi này thường xảy ra khi bạn gửi một biểu mẫu (gửi yêu cầu POST), chuyển sang trang khác, rồi nhấn nút quay lại hoặc làm mới. Theo đặc tả HTTP (RFC 9111), phản hồi POST không được lưu vào bộ nhớ đệm theo mặc định, nên khi bạn cố quay lại, Chrome không có gì để hiển thị.

ERR_CACHE_MISS không phải là mối đe dọa bảo mật và không cho thấy bất kỳ vấn đề nào với máy chủ của trang web. Đây là cơ chế bảo vệ từ phía trình duyệt nhằm ngăn chặn việc gửi lại biểu mẫu ngoài ý muốn — điều có thể gây ra thanh toán trùng lặp, đơn hàng trùng lặp hoặc các bản ghi dữ liệu trùng lặp.

Note

Nếu bạn thấy net::ERR_CACHE_MISS trong Chrome DevTools (F12 → Console), hầu như chắc chắn là vô hại. Chrome ghi lại thông báo này mỗi khi tải một tài nguyên không có trong bộ nhớ đệm — đây là hành vi bình thường trong quá trình tải trang.

ERR_CACHE_MISS Trông Như Thế Nào

Chrome hiển thị lỗi này dưới dạng thông báo toàn trang với nội dung "Không thể truy cập trang web này" hoặc "Xác nhận gửi lại biểu mẫu." Thông báo chính xác phụ thuộc vào ngữ cảnh. Dưới đây là các biến thể phổ biến.

  • ERR_CACHE_MISS — trang lỗi tiêu chuẩn hiển thị trong thanh địa chỉ

  • net::ERR_CACHE_MISS — mã lỗi đầy đủ hiển thị trong bảng điều khiển DevTools

  • Xác nhận gửi lại biểu mẫu — hộp thoại Chrome hiển thị trước khi gửi lại dữ liệu POST

  • Trang web này yêu cầu dữ liệu mà bạn đã nhập trước đó — nội dung chi tiết bên trong hộp thoại gửi lại

  • err_cache_miss — biến thể chữ thường mà một số người dùng tìm kiếm

Nguyên Nhân Gây Ra ERR_CACHE_MISS

Lỗi này có cả nguyên nhân từ phía người dùng và phía máy chủ. Hiểu rõ nguyên nhân nào áp dụng cho tình huống của bạn sẽ giúp tìm ra cách khắc phục phù hợp.

  • Gửi biểu mẫu + quay lại/làm mới — Nguyên nhân số 1. Bạn gửi biểu mẫu (yêu cầu POST), sau đó nhấn quay lại hoặc làm mới. Chrome không thể lấy phản hồi POST từ bộ nhớ đệm vì phản hồi POST không được lưu vào bộ nhớ đệm.

  • Header Cache-Control quá nghiêm ngặt — Máy chủ gửi Cache-Control: no-store, yêu cầu Chrome không bao giờ lưu phản hồi vào bộ nhớ đệm. Khi bạn quay lại, không có gì để tải.

  • Bộ nhớ đệm trình duyệt bị hỏng — Các tệp bộ nhớ đệm cục bộ bị hư hại, thường sau khi treo máy, tắt máy đột ngột hoặc lỗi ổ đĩa.

  • Tiện ích mở rộng trình duyệt — Trình chặn quảng cáo, tiện ích bảo mật và VPN chặn các yêu cầu mạng và có thể ảnh hưởng đến caching. Đây là nguyên nhân phổ biến đáng ngạc nhiên.

  • Phiên bản Chrome cũ — Các phiên bản cũ có thể chứa lỗi xử lý bộ nhớ đệm đã được sửa trong các bản phát hành mới hơn.

  • Phần mềm diệt virus hoặc bảo mật — Một số chương trình bảo mật có tính năng 'bảo vệ web' hoặc 'quét HTTPS' chặn lưu lượng giữa Chrome và máy chủ, làm hỏng hành vi caching.

  • Mở cùng một biểu mẫu trên nhiều tab — Mở cùng một trang thanh toán hoặc biểu mẫu trên nhiều tab có thể gây xung đột bộ nhớ đệm.

  • Thay đổi VPN hoặc proxy giữa phiên — Chuyển đổi máy chủ VPN hoặc kết nối mạng khác làm vô hiệu hóa các mục bộ nhớ đệm từ kết nối trước.

ERR_CACHE_MISS và Xác Nhận Gửi Lại Biểu Mẫu

Hai thông báo này có liên quan nhưng xuất hiện trong các tình huống khác nhau. Hộp thoại "Xác nhận gửi lại biểu mẫu" xuất hiện khi Chrome có khả năng gửi lại dữ liệu POST — nó đang xin phép bạn. ERR_CACHE_MISS xuất hiện khi Chrome hoàn toàn không thể lấy trang đã lưu trong bộ nhớ đệm và việc gửi lại là không thể.

Trình tự điển hình là: bạn gửi biểu mẫu (POST) → Chrome hiển thị phản hồi → bạn nhấn quay lại hoặc làm mới → Chrome sẽ hiển thị hộp thoại gửi lại HOẶC hiển thị ERR_CACHE_MISS, tùy thuộc vào header cache của máy chủ và liệu dữ liệu biểu mẫu còn khả dụng hay không.

Tại sao trình duyệt làm vậy? Vì theo đặc tả HTTP, yêu cầu POST là phương thức "không an toàn". Tự động gửi lại dữ liệu POST mà không có sự đồng ý của người dùng có thể gây ra vấn đề nghiêm trọng — tính tiền thẻ tín dụng hai lần, đơn hàng trùng lặp hoặc bản ghi cơ sở dữ liệu trùng lặp. Trình duyệt đang bảo vệ bạn.

Warning

Nếu bạn thấy "Xác nhận gửi lại biểu mẫu" trong khi mua hàng trực tuyến, hãy cẩn thận. Nhấp "Tiếp tục" có thể gửi thanh toán lần thứ hai. Hãy đợi trang xác nhận hoặc kiểm tra lịch sử đơn hàng trước khi nhấp.

Cách Sửa Lỗi ERR_CACHE_MISS (Cho Người Dùng)

Nếu bạn gặp lỗi này khi duyệt web, hầu như luôn có thể khắc phục từ trình duyệt. Bắt đầu với cách đơn giản nhất và thử lần lượt.

Cách 1: Hard Refresh Trang

Hard refresh bỏ qua bộ nhớ đệm trình duyệt và tải bản sao hoàn toàn mới từ máy chủ. Đây là cách khắc phục nhanh nhất và giải quyết được lỗi trong hầu hết các trường hợp.

bash
# Windows / Linux
Ctrl + Shift + R

# Mac
Cmd + Shift + R

# Alternative (all platforms)
Ctrl + F5

Nếu hard refresh thông thường không hiệu quả, hãy thử nhấp chuột phải vào nút tải lại (khi DevTools đang mở) và chọn "Empty Cache and Hard Reload" để đặt lại triệt để nhất.

Cách 2: Xóa Bộ Nhớ Đệm Trình Duyệt

Nếu hard refresh không hiệu quả, hãy xóa hoàn toàn dữ liệu bộ nhớ đệm của Chrome. Thao tác này xóa tất cả các mục bộ nhớ đệm bị hỏng và buộc Chrome bắt đầu lại từ đầu.

  • Bước 1: Mở Cài đặt Chrome (ba dấu chấm → Cài đặt) hoặc nhập chrome://settings/clearBrowserData vào thanh địa chỉ

  • Bước 2: Chuyển sang tab Nâng cao

  • Bước 3: Đặt phạm vi thời gian thành Từ trước đến nay

  • Bước 4: Đánh dấu Tệp và hình ảnh được lưu trong bộ nhớ đệm và Cookie và dữ liệu trang web khác

  • Bước 5: Nhấp Xóa dữ liệu

Tip

Xóa cookie sẽ đăng xuất bạn khỏi tất cả các trang web. Nếu bạn chỉ muốn sửa lỗi bộ nhớ đệm, hãy bỏ chọn "Cookie và dữ liệu trang web khác" và chỉ xóa "Tệp và hình ảnh được lưu trong bộ nhớ đệm."

Cách 3: Thử Ở Chế Độ Ẩn Danh

Chế độ ẩn danh khởi động Chrome với trạng thái hoàn toàn sạch — không tiện ích mở rộng, không dữ liệu bộ nhớ đệm, không cookie. Nếu trang tải được ở chế độ ẩn danh nhưng không tải được ở chế độ thường, vấn đề do tiện ích mở rộng hoặc bộ nhớ đệm bị hỏng.

Mở cửa sổ ẩn danh bằng Ctrl+Shift+N (Windows/Linux) hoặc Cmd+Shift+N (Mac), sau đó truy cập cùng một trang. Nếu trang tải được, một trong các tiện ích mở rộng của bạn là thủ phạm.

Cách 4: Tắt Tiện Ích Mở Rộng Trình Duyệt

Các tiện ích mở rộng thay đổi cách tải trang, chặn yêu cầu hoặc chặn lưu lượng mạng là nguyên nhân phổ biến gây ra ERR_CACHE_MISS. Trình chặn quảng cáo, công cụ bảo mật và VPN là những nghi phạm chính.

Truy cập chrome://extensions/, tắt tất cả tiện ích mở rộng, sau đó tải lại trang. Nếu lỗi biến mất, bật lại từng tiện ích một để tìm ra cái nào gây ra vấn đề.

Cách 5: Cập Nhật Chrome

Các phiên bản Chrome cũ có thể chứa lỗi xử lý bộ nhớ đệm. Truy cập chrome://settings/help để kiểm tra cập nhật. Chrome thường tự động cập nhật, nhưng bản cập nhật chỉ có hiệu lực sau khi khởi động lại.

Nếu lỗi bắt đầu xuất hiện sau khi cập nhật Chrome, đó có thể là lỗi mới được đưa vào. Kiểm tra trình theo dõi lỗi Chromium để xem các vấn đề đã biết với phiên bản của bạn.

Cách 6: Xóa Bộ Nhớ Đệm DNS

Xóa bộ nhớ đệm DNS sẽ loại bỏ các mục DNS cũ có thể gây ra sự cố kết nối. Cách này giải quyết ERR_CACHE_MISS khi lỗi liên quan đến bộ nhớ đệm ở tầng mạng thay vì bộ nhớ đệm trình duyệt.

bash
# Windows (Command Prompt as Admin)
ipconfig /flushdns

# macOS
sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder

# Linux
sudo systemd-resolve --flush-caches

# Chrome internal DNS cache
# Visit chrome://net-internals/#dns → Click "Clear host cache"

Bạn có thể kiểm tra cấu hình DNS bằng công cụ tra cứu DNS của DNS Robot để xem tên miền có phân giải đúng không.

Cách 7: Đặt Lại Cài Đặt Mạng

Nếu không có cách nào hiệu quả, đặt lại network stack có thể sửa các sự cố kết nối sâu gây ra lỗi bộ nhớ đệm.

bash
# Windows (Command Prompt as Admin)
netsh winsock reset
netsh int ip reset
ipconfig /release
ipconfig /renew

# Then restart your computer

Warning

Đặt lại cài đặt mạng sẽ xóa tất cả cấu hình mạng tùy chỉnh — bao gồm IP tĩnh, máy chủ DNS tùy chỉnh và cài đặt proxy. Ghi lại cài đặt hiện tại trước khi chạy các lệnh này.

Cách Sửa Lỗi ERR_CACHE_MISS (Cho Nhà Phát Triển)

Nếu người dùng báo cáo lỗi ERR_CACHE_MISS trên trang web của bạn, cần sửa từ phía máy chủ. Thay đổi quan trọng nhất là triển khai mẫu Post/Redirect/Get.

Mẫu Post/Redirect/Get (PRG)

Mẫu Post/Redirect/Get (PRG) là giải pháp triệt để cho ERR_CACHE_MISS. Đây là phương pháp tốt nhất trong phát triển web từ năm 2003. Ý tưởng rất đơn giản: sau khi xử lý biểu mẫu POST, phản hồi bằng chuyển hướng HTTP (302 hoặc 303) đến trang xác nhận GET thay vì hiển thị phản hồi trực tiếp.

Không có PRG, lịch sử trình duyệt kết thúc bằng yêu cầu POST. Khi người dùng nhấn quay lại hoặc làm mới, Chrome phải gửi lại dữ liệu POST (hoặc hiển thị ERR_CACHE_MISS). Với PRG, lịch sử trình duyệt kết thúc bằng yêu cầu GET an toàn có thể làm mới hoặc quay lại mà không gặp vấn đề.

bash
# Without PRG (causes ERR_CACHE_MISS):
POST /checkout → 200 OK (render confirmation page)
# User refreshes → ERR_CACHE_MISS or "Confirm Form Resubmission"

# With PRG (no cache issues):
POST /checkout → 303 See Other → Location: /order/12345
GET /order/12345 → 200 OK (render confirmation page)
# User refreshes → Normal page reload (safe GET request)

Sử dụng HTTP 303 See Other (được khuyến nghị) hoặc 302 Found cho chuyển hướng. Mã 303 chuyển đổi POST thành GET một cách rõ ràng theo đặc tả HTTP, đúng với hành vi mà bạn mong muốn.

Kiểm Tra Header Cache-Control

Các header Cache-Control quá hạn chế gây ra lỗi ERR_CACHE_MISS không cần thiết. Sử dụng Chrome DevTools (F12 → tab Network) để kiểm tra header phản hồi cho các trang của bạn.

Header Cache-Control: no-store yêu cầu Chrome không bao giờ lưu phản hồi vào bộ nhớ đệm — đây là tùy chọn nghiêm ngặt nhất. Nếu trang của bạn không chứa dữ liệu nhạy cảm (như giao dịch tài chính), hãy cân nhắc sử dụng no-cache, cho phép lưu bộ nhớ đệm nhưng yêu cầu xác thực lại trước khi sử dụng.

Bạn có thể kiểm tra header HTTP của máy chủ bằng công cụ kiểm tra HTTP Headers của DNS Robot để xem chính xác các chỉ thị Cache-Control mà máy chủ gửi đi.

Chỉ thịHành vi cacheRủi ro ERR_CACHE_MISS
no-storeKhông bao giờ lưu phản hồi vào cacheCao — nút quay lại luôn thất bại
no-cacheLưu cache nhưng xác thực lại trước khi dùngThấp — Chrome phục vụ từ cache khi quay lại
max-age=3600Lưu cache 1 giờ không cần xác thực lạiKhông — trang tải từ cache
private, max-age=0Lưu cache nhưng luôn xác thực lạiThấp — tương tự no-cache

Sửa Xung Đột Cache WordPress

Các trang WordPress sử dụng plugin cache đặc biệt dễ gặp lỗi ERR_CACHE_MISS. Xung đột giữa các quy tắc cache của plugin, lớp cache từ nhà cung cấp hosting và CDN có thể tạo ra hành vi cache không nhất quán.

Nếu bạn sử dụng WooCommerce, hãy đảm bảo plugin cache loại trừ các trang động — giỏ hàng, thanh toán và trang tài khoản không nên được cache. Hầu hết các plugin phổ biến (WP Super Cache, W3 Total Cache, LiteSpeed Cache) đều có cài đặt riêng cho WooCommerce.

  • Xóa toàn bộ cache — Xóa cache plugin, cache hosting (nếu có) và cache CDN cùng lúc

  • Tắt plugin xung đột — Không bao giờ chạy hai plugin cache toàn trang cùng lúc

  • Loại trừ trang động — Giỏ hàng, thanh toán và trang đăng nhập phải được loại khỏi cache

  • Kiểm tra cache tầng máy chủ — Nhà cung cấp hosting có thể thêm lớp cache riêng (Varnish, LiteSpeed, v.v.) xung đột với plugin của bạn

ERR_CACHE_MISS Trên Android (WebView)

Lập trình viên Android thường gặp net::ERR_CACHE_MISS khi sử dụng WebView để tải trang web bên trong ứng dụng. Đây là vấn đề phổ biến trong các dự án Android, Flutter và React Native.

Nguyên nhân phổ biến nhất là thiếu quyền INTERNET trong AndroidManifest.xml. Không có quyền này, WebView không thể gửi yêu cầu mạng và chuyển sang dùng bộ nhớ đệm — nhưng lần tải đầu tiên thì bộ nhớ đệm chưa tồn tại.

bash
<!-- AndroidManifest.xml — Add this permission -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Nếu quyền đã được thêm, hãy thử đặt chế độ cache của WebView thành LOAD_DEFAULT hoặc LOAD_NO_CACHE để bỏ qua các mục cache cũ. Với ứng dụng Flutter, kiểm tra xem plugin webview_flutter đã được cập nhật lên phiên bản mới nhất chưa.

ERR_CACHE_MISS Trên Các Trình Duyệt Khác

ERR_CACHE_MISS là mã lỗi riêng của Chromium. Tất cả trình duyệt dựa trên Chromium (Chrome, Edge, Brave, Opera, Vivaldi, Arc) đều hiển thị cùng một lỗi. Các engine trình duyệt khác hiển thị thông báo khác cho cùng một vấn đề gốc.

Trình duyệtThông báo lỗiGhi chú
Chrome / Edge / Brave / OperaERR_CACHE_MISSDựa trên Chromium — lỗi giống hệt
FirefoxDocument ExpiredHiển thị: "Tài liệu này không còn khả dụng"
SafariHộp thoại gửi lại biểu mẫuHiển thị: "Bạn có muốn gửi lại biểu mẫu không?"

Thông báo "Document Expired" của Firefox là lỗi tương đương được biết đến nhiều nhất. Nó xuất hiện với nội dung: "This document is no longer available. The requested page contains data from a form submission (POSTDATA). This data is no longer available." (Tài liệu này không còn khả dụng. Trang được yêu cầu chứa dữ liệu từ việc gửi biểu mẫu (POSTDATA). Dữ liệu này không còn khả dụng.) Cách khắc phục giống nhau — xóa bộ nhớ đệm hoặc sử dụng mẫu PRG phía máy chủ.

Các Lỗi Cache Liên Quan Trên Chrome

Chrome có nhiều mã lỗi liên quan đến bộ nhớ đệm. Tất cả đều bắt đầu bằng ERR_CACHE_ nhưng chỉ ra các vấn đề khác nhau.

Mã lỗiÝ nghĩaNguyên nhân phổ biến
ERR_CACHE_MISS (-400)Mục cache không tồn tạiPOST + quay lại/làm mới, header no-store
ERR_CACHE_READ_FAILURE (-401)Không thể đọc từ cache đĩaTệp cache bị hỏng, lỗi ổ đĩa
ERR_CACHE_WRITE_FAILURE (-402)Không thể ghi vào cache đĩaĐĩa đầy, vấn đề quyền truy cập
ERR_CACHE_OPERATION_NOT_SUPPORTED (-403)Thao tác không được hỗ trợ cho mục nàyLoại nội dung không được hỗ trợ trong cache
ERR_CACHE_CHECKSUM_MISMATCH (-408)Dữ liệu cache không qua kiểm tra tính toàn vẹnCache bị hỏng, ghi bị gián đoạn

Với tất cả các lỗi này, xóa bộ nhớ đệm trình duyệt (Cách 2 ở trên) là giải pháp phổ quát cho người dùng. Nếu lỗi vẫn tiếp tục sau khi xóa cache, vấn đề nằm ở tiện ích mở rộng hoặc cấu hình phía máy chủ.

Kiểm Tra HTTP Headers Của Bạn

Sử dụng công cụ kiểm tra HTTP Headers miễn phí của DNS Robot để kiểm tra header Cache-Control của máy chủ và các chỉ thị phản hồi khác ảnh hưởng đến caching trình duyệt.

Try Công cụ kiểm tra HTTP Headers

Frequently Asked Questions

ERR_CACHE_MISS có nghĩa là Chrome đã cố tải phiên bản được lưu trong bộ nhớ đệm của trang nhưng mục cache đó không tồn tại. Đây là lỗi phía trình duyệt (không phải lỗi máy chủ), thường xuất hiện nhất sau khi gửi biểu mẫu rồi nhấn nút quay lại hoặc làm mới.

Related Tools

Http HeadersDns LookupSsl Checker

Related Articles

Http Error 500Http Error 503Dns Probe Nxdomain FixConnection Not Private Fix

Table of Contents

  • ERR_CACHE_MISS Là Gì?
  • ERR_CACHE_MISS Trông Như Thế Nào
  • Nguyên Nhân Gây Ra ERR_CACHE_MISS
  • ERR_CACHE_MISS và Xác Nhận Gửi Lại Biểu Mẫu
  • Cách Sửa Lỗi ERR_CACHE_MISS (Cho Người Dùng)
  • Cách 1: Hard Refresh Trang
  • Cách 2: Xóa Bộ Nhớ Đệm Trình Duyệt
  • Cách 3: Thử Ở Chế Độ Ẩn Danh
  • Cách 4: Tắt Tiện Ích Mở Rộng Trình Duyệt
  • Cách 5: Cập Nhật Chrome
  • Cách 6: Xóa Bộ Nhớ Đệm DNS
  • Cách 7: Đặt Lại Cài Đặt Mạng
  • Cách Sửa Lỗi ERR_CACHE_MISS (Cho Nhà Phát Triển)
  • Mẫu Post/Redirect/Get (PRG)
  • Kiểm Tra Header Cache-Control
  • Sửa Xung Đột Cache WordPress
  • ERR_CACHE_MISS Trên Android (WebView)
  • ERR_CACHE_MISS Trên Các Trình Duyệt Khác
  • Các Lỗi Cache Liên Quan Trên Chrome
  • FAQ