JavaScript và SEO : render và lập chỉ mục
9 min
Google có thể render JavaScript, nhưng với độ trễ có thể từ vài giây đến vài tuần tùy theo thẩm quyền của trang web. Nội dung quan trọng (văn bản chính, liên kết, dữ liệu cấu trúc) không được phụ thuộc vào JavaScript để hiển thị. Server-Side Rendering (SSR) hoặc prerendering là các giải pháp được khuyến nghị.
Các framework JavaScript hiện đại (React, Vue, Angular, Next.js) chi phối phát triển web. Nhưng mối quan hệ của chúng với SEO vẫn phức tạp : nếu Google đã tiến bộ trong render JS, rủi ro lập chỉ mục một phần hoặc bị trễ là có thực và tốn kém.
Cách Google xử lý JavaScript
Googlebot tải xuống HTML ban đầu của trang, sau đó đặt render JavaScript vào hàng đợi (WRS — Web Rendering Service). Việc render đầy đủ có thể xảy ra vài giây, vài ngày, thậm chí vài tuần sau đó tùy theo mức độ phổ biến của trang web và tải của công cụ.
Độ trễ render này có nghĩa là nội dung chỉ có JS luôn được lập chỉ mục muộn hơn nội dung HTML tĩnh. Trên trang web ít thẩm quyền, một số nội dung có thể không bao giờ được render đúng cách.
Các rủi ro cụ thể cho lập chỉ mục
Nội dung chỉ hiển thị sau tương tác người dùng (nhấp, cuộn, tab) không bao giờ được Googlebot thấy. Accordion FAQ, tab nội dung và nội dung khi di chuột là các trường hợp phổ biến nhất.
Các liên kết được tạo động bởi JavaScript không luôn được Googlebot theo dõi. Nếu liên kết nội bộ của bạn dựa vào các liên kết được tạo sau khi tải trang, một phần kiến trúc của bạn vẫn vô hình với crawler.
- Nội dung sau sự kiện nhấp hoặc hover : không được lập chỉ mục.
- Liên kết trong menu hamburger JS thuần túy không có HTML dự phòng : có thể bị bỏ qua.
- Dữ liệu cấu trúc JSON-LD được chèn qua JS : render bị trễ, đủ điều kiện cho rich results bị chậm.
- Meta tags được tạo phía client : title và description có thể vắng mặt trong lần crawl đầu tiên.
- Văn bản phân trang được tải qua AJAX không có URL chuyên dụng : nội dung vô hình.
Các giải pháp được khuyến nghị
Server-Side Rendering (SSR) tạo ra HTML đầy đủ trên máy chủ trước khi gửi đến trình duyệt. Googlebot nhận được HTML phong phú ngay từ lần crawl đầu tiên, mà không cần chờ render JavaScript. Next.js, Nuxt.js và SvelteKit đề xuất SSR gốc.
Static Site Generation (SSG) tạo sẵn các trang tại mỗi lần build. Nhanh hơn SSR, nhưng chỉ phù hợp với nội dung ít được cập nhật thường xuyên.
Nếu không thể cải tiến sang SSR, prerendering qua dịch vụ như Rendertron hoặc Prerender.io phát hiện Googlebot và phục vụ phiên bản HTML tĩnh được tạo sẵn.
Các trang web di chuyển từ kiến trúc SPA (Single Page Application) sang SSR ghi nhận trung bình cải thiện 20-50% số trang được lập chỉ mục trong 60 ngày sau di chuyển.
Nghiên cứu ngành 2025-2026 về di chuyển SSR và lập chỉ mục
Chẩn đoán vấn đề render JS trên trang web của bạn
Công cụ kiểm tra URL của Search Console đề xuất ảnh chụp màn hình trang như Googlebot thấy. So sánh ảnh chụp này với hiển thị thực trong trình duyệt : bất kỳ sự khác biệt nào tiết lộ vấn đề render.
Cũng hãy thử tắt JavaScript trong Chrome (DevTools > Settings > Debugger > Disable JavaScript) : nếu trang không hiển thị gì hoặc mất các liên kết điều hướng, bạn có vấn đề SEO quan trọng cần giải quyết.
FAQ
Google có thể lập chỉ mục SPA (Single Page Application) đúng cách không?
Có, nhưng với các hạn chế và độ trễ. Nội dung của SPA được lập chỉ mục sau render JavaScript, có thể mất vài tuần. Trên các trang cạnh tranh, độ trễ này là bất lợi thực sự. SSR hoặc prerendering vẫn là giải pháp đáng tin cậy nhất.
Next.js có phải là lựa chọn tốt cho SEO không?
Có, đây là một trong các framework SEO-friendly nhất trên thị trường. Nó đề xuất SSR, SSG và ISR (Incremental Static Regeneration) gốc. Các thẻ meta, sitemap và dữ liệu cấu trúc có thể được tạo phía máy chủ mà không cần cấu hình phức tạp.
Nội dung trong tab hoặc accordion có được lập chỉ mục không?
Google khẳng định nội dung bị ẩn bởi CSS (display:none hoặc visibility:hidden) có thể được lập chỉ mục nhưng với trọng số giảm. Nội dung sau tương tác JavaScript là vấn đề hơn. Đối với FAQ hoặc thông tin chủ chốt, hãy ưu tiên hiển thị HTML gốc với details/summary hoặc đảm bảo nội dung có trong HTML ban đầu.
Có cần làm JavaScript tương thích với tất cả các bot, hay chỉ Google?
Google là công cụ tìm kiếm duy nhất tích cực render JavaScript. Bing đang tiến bộ nhưng vẫn tụt hậu. Nếu đối tượng của bạn chủ yếu đến từ Google, hãy tập trung nỗ lực vào khả năng tương thích với Googlebot. Kiến trúc SSR tự động mang lại lợi ích cho tất cả bot.