304 Not Modified là gì?
304 Not Modified là mã trạng thái HTTP mà server trả về khi tài nguyên yêu cầu không thay đổi kể từ lần truy cập cuối cùng của client. Server không gửi lại nội dung mà yêu cầu client sử dụng phiên bản đã lưu trong cache. Điều này giúp tiết kiệm băng thông và tăng tốc độ tải trang web.
Tầm quan trọng của 304 Not Modified trong Technical SEO
304 Not Modified đóng vai trò quan trọng trong Technical SEO bằng cách hỗ trợ caching hiệu quả, cải thiện tốc độ tải trang và trải nghiệm người dùng. Googlebot hỗ trợ mã này để tái sử dụng nội dung đã crawl, tiết kiệm crawl budget. Kết quả là website tăng thứ hạng nhờ Core Web Vitals tốt hơn.
Cơ chế hoạt động của 304 Not Modified và hướng dẫn triển khai chuẩn xác
Server kiểm tra header If-None-Match (ETag) hoặc If-Modified-Since từ client để xác định tài nguyên có thay đổi không. Nếu không thay đổi, server trả về 304 Not Modified mà không gửi body response. Để triển khai, cấu hình server so sánh ETag hoặc Last-Modified với phiên bản hiện tại.
Cấu hình cơ bản trên các server phổ biến:
- Apache: Sử dụng mod_expires và mod_headers để set ETag/Last-Modified.
- Nginx: Thêm etag on; và expires directive trong location block.
- Google Cloud Storage/CDN: Kích hoạt metadata ETag tự động.
Những sai lầm kỹ thuật chí mạng cần tránh khi thiết lập 304 Not Modified
Sai lầm phổ biến nhất là set Last-Modified date không chính xác do lỗi múi giờ server. Server luôn trả 304 Not Modified dù tài nguyên thay đổi dẫn đến stale content cho người dùng và Googlebot. Stale 304 trap xảy ra khi cache lỗi cũ (như trang 200 bị hỏng) được xác nhận vẫn hợp lệ, khiến crawler ngừng kiểm tra.
Các lỗi khác cần tránh:
- Không cập nhật ETag khi nội dung thay đổi: Dẫn đến browser hiển thị phiên bản cũ.
- Caching quá aggressive: Gây chậm cập nhật nội dung mới.
- Bỏ qua kiểm tra log server: Không phát hiện vấn đề kịp thời.
Các thuật ngữ SEO quan trọng liên quan đến 304 Not Modified
Hiểu các thuật ngữ liên quan giúp triển khai 304 Not Modified hiệu quả trong Technical SEO.
- ETag: Header xác định phiên bản duy nhất của tài nguyên, server so sánh với If-None-Match để quyết định trả 304.
- Last-Modified: Header chỉ thời gian sửa đổi cuối cùng, client gửi If-Modified-Since để kiểm tra thay đổi.
- Cache-Control: Directive hướng dẫn client/server lưu cache bao lâu, kết hợp với 304 để tối ưu hiệu suất.
- Core Web Vitals: Chỉ số tốc độ trang (LCP, FID, CLS) được cải thiện nhờ 304 giảm tải dữ liệu.
Các câu hỏi thường gặp (FAQs)
304 Not Modified khác gì với 200 OK?
304 Not Modified xác nhận tài nguyên không thay đổi nên client dùng cache, không gửi body. 200 OK gửi đầy đủ nội dung mới hoặc lần đầu truy cập. Sự khác biệt giúp tiết kiệm băng thông và tăng tốc độ tải.
Googlebot xử lý 304 Not Modified như thế nào?
Googlebot tái sử dụng cache nếu nhận 304 Not Modified, không re-fetch nội dung. Điều này tiết kiệm crawl budget nhưng có thể gây stale 304 trap nếu cache lỗi cũ. Server cần trả 200 mới với ETag cập nhật để sửa.
Làm thế nào triển khai 304 Not Modified trên website?
Cấu hình server kiểm tra ETag hoặc Last-Modified và trả 304 nếu khớp. Sử dụng plugin như WP Rocket trên WordPress hoặc directive Nginx/Apache. Kiểm tra bằng công cụ Developer Tools hoặc Google Search Console.
304 Not Modified có ảnh hưởng xấu đến SEO không?
304 Not Modified cải thiện SEO nhờ tốc độ tải nhanh hơn và crawl hiệu quả. Tuy nhiên, cấu hình sai gây stale content, làm giảm thứ hạng. Giám sát log server để tránh rủi ro.