Liên hệ

    Kỹ thuật triển khai phân trang (Pagination), nút Xem thêm (Load More) và cuộn vô tận thân thiện với trình thu thập Googlebot

    Trả lời nhanh

    Triển khai phân trang (Pagination), nút Xem thêm (Load More) hoặc cuộn vô tận (Infinite Scroll) chuẩn SEO trên website thương mại điện tử đòi hỏi mọi trang danh sách sản phẩm phải có một đường dẫn URL độc lập, kết xuất sẵn thẻ liên kết <a href> chuẩn HTML và tự trỏ thẻ Canonical về chính trang phân trang đó. Vì Googlebot không tự cuộn chuột hay nhấp nút kích hoạt sự kiện JavaScript, việc thiếu cấu trúc URL phân trang tĩnh sẽ khiến hàng nghìn sản phẩm nằm từ trang 2 trở đi bị bỏ sót.

    Trên các website thương mại điện tử sở hữu hàng nghìn mã hàng, giao diện cuộn vô tận hoặc nút Xem thêm thường được ưa chuộng vì mang lại trải nghiệm lướt xem liền mạch trên di động. Tuy nhiên, nếu triển khai chỉ bằng sự kiện JavaScript phía trình duyệt, cấu trúc này sẽ ngăn cản trình thu thập khám phá sản phẩm nằm sâu trong danh mục. Bài viết dưới đây giải quyết bài toán cân bằng này.

    Phần 01

    Cơ chế hoạt động của Googlebot và nguyên nhân khiến sản phẩm ở trang sau không được lập chỉ mục

    Để hiểu vì sao nhiều website thương mại điện tử bị mất lập chỉ mục hàng loạt sản phẩm sau khi đổi giao diện sang nút Xem thêm hoặc cuộn vô tận, cần nắm rõ hành vi của trình thu thập Googlebot. Khi truy cập một trang danh mục, dịch vụ kết xuất web (Web Rendering Service) của Google sử dụng một cửa sổ khung nhìn (Viewport) có chiều cao cố định nhưng không thực hiện thao tác lăn chuột liên tục hoặc chủ động nhấp vào các thẻ <button> gắn sự kiện onClick để gọi API lấy thêm sản phẩm.

    Do đó, nếu trang danh mục chỉ hiển thị 24 sản phẩm ban đầu và yêu cầu người dùng bấm nút Xem thêm để kích hoạt hàm fetch() nạp tiếp sản phẩm từ trang 2, Googlebot sẽ chỉ nhìn thấy đúng 24 sản phẩm đầu tiên. Toàn bộ hàng trăm sản phẩm nằm ở các lần tải tiếp theo sẽ trở thành các trang mồ côi (Orphan Pages) nếu không được liên kết từ nơi khác, dẫn đến việc suy giảm nghiêm trọng sức mạnh liên kết nội bộ (Internal PageRank) truyền từ trang danh mục xuống trang chi tiết sản phẩm.

    Một sai lầm nghiêm trọng khác thường gặp ở các hệ thống phân trang truyền thống là đặt thẻ rel=canonical từ các trang ?page=2, ?page=3 trỏ ngược về trang đầu tiên của danh mục, hoặc gắn thẻ noindex cho toàn bộ các trang từ trang 2 trở đi. Theo tài liệu hướng dẫn kỹ thuật của Google, trang 2 không phải là bản sao trùng lặp của trang 1 vì chúng chứa danh sách các sản phẩm hoàn toàn khác nhau; việc trỏ Canonical về trang 1 sẽ khiến Google ngừng theo dõi các liên kết sản phẩm nằm trên các trang phân trang đó.

    • Googlebot không tương tác như người dùng thật: Trình thu thập không nhấp nút <button>, không gửi biểu mẫu và không kích hoạt sự kiện cuộn trang vô hạn.
    • Khám phá liên kết dựa trên thẻ neo chuẩn: Hệ thống tìm kiếm chỉ đi theo các thẻ <a href=...> có chứa thuộc tính đường dẫn URL hợp lệ trong cây DOM đã kết xuất.
    • Sai lầm về Canonical trang phân trang: Tuyệt đối không trỏ thẻ Canonical của ?page=2 về trang gốc danh mục; mỗi trang phân trang phải tự khai báo Canonical về chính URL của nó.
    • Hậu quả của thẻ noindex dài hạn: Đặt noindex, follow trên các trang phân trang sẽ khiến Googlebot dần ngừng thu thập cả các liên kết sản phẩm nằm trên những trang đó theo thời gian.
    Phần 02

    So sánh 3 mô hình điều hướng danh mục và kiến trúc kết hợp (Hybrid Progressive Enhancement)

    Trên thực tế vận hành thương mại điện tử, mỗi phương thức điều hướng danh sách sản phẩm đều có ưu và nhược điểm riêng đối với tỷ lệ chuyển đổi (CRO) và hiệu quả tìm kiếm tự nhiên. Phân trang đánh số truyền thống (Numbered Pagination) dễ triển khai cho SEO và giúp người dùng dễ dàng nhìn thấy chân trang (Footer), nhưng lại gây gián đoạn trên điện thoại khi khách phải chờ tải lại toàn bộ trang sau mỗi lần chuyển số.

    Trong khi đó, mô hình cuộn vô tận (Infinite Scroll) phù hợp với ngành hàng thời trang, phụ kiện thiên về cảm hứng lướt xem hình ảnh, nhưng lại khiến người dùng khó tìm lại vị trí một sản phẩm vừa lướt qua và không thể chạm tới vùng chân trang chứa thông tin liên hệ. Mô hình nút Xem thêm (Load More kết hợp thanh tiến trình hiển thị số lượng sản phẩm đã xem trên tổng số) thường đạt điểm cân bằng cao hơn cho trải nghiệm mua sắm đa ngành hàng.

    Để thỏa mãn đồng thời cả người mua lẫn công cụ tìm kiếm, kỹ thuật nâng cao lũy tiến (Progressive Enhancement) kết hợp History API (pushState / replaceState) là tiêu chuẩn cần áp dụng. Dưới tầng mã nguồn HTML do máy chủ trả về, hệ thống vẫn kết xuất đầy đủ các liên kết phân trang chuẩn <a href> trỏ tới ?page=2, ?page=3. Khi người dùng thật sử dụng trình duyệt có bật JavaScript, giao diện sẽ chặn hành vi chuyển trang mặc định, tải nối tiếp danh sách sản phẩm mượt mà và tự động cập nhật URL trên thanh địa chỉ khớp với số trang tương ứng.

    Đánh giá tác động UX và yêu cầu kỹ thuật SEO của 3 mô hình phân trang danh mục TMĐT
    Mô hình điều hướngTrải nghiệm người mua (UX/CRO)Rủi ro kỹ thuật SEO thường gặpGiải pháp kiến trúc chuẩn hóa
    Phân trang đánh số (Numbered Pagination)Kiểm soát vị trí rõ ràng, dễ chạm tới Footer nhưng phải tải lại trang khi chuyển tiếpĐộ sâu thu thập (Crawl Depth) lớn nếu chỉ hiển thị liên kết tiến lùi từng bước nhỏKết xuất thẻ <a href> tĩnh, tự trỏ Canonical và mở rộng bước nhảy số trang (1, 2, 3... 10, 20)
    Nút Xem thêm (Load More Button)Chủ động kiểm soát luồng tải, giữ truy cập được Footer và giảm tỷ lệ thoát trên di độngSử dụng thẻ <button> gọi AJAX không có URL riêng khiến bot bỏ sót sản phẩm trang sauBọc nút trong thẻ <a href=?page=2> và dùng History API cập nhật URL khi nạp thêm dữ liệu
    Cuộn vô tận (Infinite Scroll)Lướt xem liền mạch không cần nhấp, nhưng gây mất phương hướng và chặn đường xuống FooterBot không kích hoạt sự kiện scroll, làm đứt gãy hoàn toàn liên kết tới các sản phẩm phía dướiTriển khai Pagination song song dưới nền HTML và đổi URL theo vị trí khung nhìn (IntersectionObserver)
    Phần 03

    Quy chuẩn kỹ thuật triển khai URL, thẻ HTML và History API cho phân trang nâng cao

    Nguyên tắc bất di bất dịch khi xây dựng chức năng Load More hoặc Infinite Scroll thân thiện với công cụ tìm kiếm là mỗi lát cắt dữ liệu (Data Slice) tương ứng với một trang phải có một URL tĩnh độc lập có thể truy cập trực tiếp. Ví dụ, khi bất kỳ người dùng hoặc Googlebot truy cập thẳng vào địa chỉ /dien-thoai?page=3, máy chủ web phải trả về mã trạng thái HTTP 200 kèm danh sách các sản phẩm từ vị trí thứ 49 đến 72 (giả sử mỗi trang có 24 mặt hàng), hoàn toàn độc lập với trang 1 và trang 2.

    Khi người dùng bắt đầu từ trang 1 và cuộn xuống hoặc bấm nút Xem thêm để tải nhóm sản phẩm của trang 2, đoạn mã JavaScript cần sử dụng IntersectionObserver để theo dõi xem phần tử sản phẩm thuộc trang nào đang chiếm diện tích chính trên màn hình. Khi người dùng cuộn qua ranh giới trang 2, hệ thống gọi history.replaceState(null, null, ?page=2) để đổi đường dẫn trên thanh địa chỉ trình duyệt, và khi họ cuộn ngược lên vùng sản phẩm của trang 1, URL cũng tự động trả về đường dẫn gốc /dien-thoai.

    Cách xử lý trạng thái lịch sử trình duyệt này giải quyết triệt để một nỗi đau lớn về trải nghiệm người dùng: khi khách hàng cuộn đến trang 4, nhấp vào xem chi tiết một sản phẩm rồi bấm nút Quay lại (Back) trên trình duyệt, họ sẽ được đưa về đúng vị trí danh sách của trang 4 thay vì bị đẩy ngược lên đầu trang 1 và phải cuộn lại từ đầu. Đồng thời, cần lưu ý không bao giờ tạo ra liên kết chứa tham số ?page=1; mọi liên kết quay về trang đầu tiên của danh mục phải trỏ thẳng về URL gốc không có tham số phân trang để tránh tạo ra hai URL trùng lặp cho cùng một trang đầu.

    • Chuẩn hóa URL trang đầu tiên: Liên kết về trang 1 luôn dùng /danh-muc, tuyệt đối không sinh ra liên kết /danh-muc?page=1 trong thanh phân trang.
    • Xử lý mã phản hồi cho trang vượt giới hạn: Nếu danh mục chỉ có 10 trang nhưng có yêu cầu truy cập ?page=15, máy chủ cần trả về mã HTTP 404 thay vì trả về trang trống kèm mã 200.
    • Tối ưu hóa nội dung mô tả danh mục (Category Copy): Khối văn bản giới thiệu danh mục dài ở cuối trang chỉ nên hiển thị tại trang 1 và ẩn đi ở các trang ?page=2, ?page=3 để tránh pha loãng nội dung và giúp bot tập trung vào danh sách sản phẩm.
    • Phân biệt tiêu đề trang phân trang: Tự động nối thêm cụm từ định danh như Trang 2, Trang 3 vào thẻ <title> và <h1> của các trang sau để tránh cảnh báo trùng lặp tiêu đề trong công cụ kiểm toán.
    Phần 04

    Tối ưu hóa độ sâu thu thập dữ liệu (Crawl Depth) cho danh mục hàng nghìn sản phẩm

    Trên các website thương mại điện tử có danh mục lớn chứa tới 2.000 sản phẩm (tương đương hơn 80 trang phân trang nếu mỗi trang hiển thị 24 mã hàng), thanh phân trang kiểu nối tiếp đơn thuần 1, 2, 3, 4, Next, Last sẽ tạo ra độ sâu thu thập rất lớn. Để đi tới được trang phân trang thứ 40 nằm ở khoảng giữa, Googlebot phải đi qua tối thiểu 20 đến 30 bước nhảy liên kết từ trang đầu tiên, khiến ngân sách thu thập bị tiêu hao và các sản phẩm ở khoảng giữa danh mục hiếm khi được quét lại.

    Để thu hẹp khoảng cách số lần nhấp (Click Depth) từ trang danh mục gốc tới mọi trang phân trang, đội ngũ kỹ thuật nên thiết kế thuật toán hiển thị số trang theo bước nhảy lũy tiến hoặc bước nhảy thập phân. Chẳng hạn, khi đang ở trang 1, thanh phân trang có thể hiển thị liên kết trực tiếp tới các trang 1, 2, 3, 4, 5, 10, 20, 30, 50, 80. Khi đó, chỉ sau tối đa 2 đến 3 bước nhảy liên kết, trình thu thập dữ liệu đã có thể tiếp cận toàn bộ các vùng sản phẩm nằm sâu trong danh mục.

    Tuy nhiên, giải pháp căn cơ hơn cả cho các danh mục quá dài là phân rã kiến trúc thông tin bằng hệ thống danh mục con (Sub-categories) hoặc trang đích thương hiệu kết hợp thuộc tính. Thay vì dồn 2.000 mã hàng vào một danh mục duy nhất khiến việc phân trang kéo dài hàng chục trang, việc chia nhỏ thành các danh mục chuyên sâu từ 100 đến 200 sản phẩm vừa giúp người mua lọc hàng nhanh chóng, vừa giúp toàn bộ sản phẩm nằm trọn trong phạm vi 4 đến 8 trang phân trang có trọng số liên kết cao.

    • Áp dụng thanh phân trang bước nhảy lô-ga-rít: Bổ sung các điểm neo trang chẵn chục (10, 20, 30...) vào dải liên kết phân trang cho các danh mục vượt quá 15 trang.
    • Sắp xếp thứ tự ưu tiên sản phẩm mặc định: Đưa các mã hàng còn tồn kho dồi dào, biên lợi nhuận tốt và nhu cầu tìm kiếm cao lên những trang đầu tiên để nhận nhiều sức mạnh liên kết nội bộ hơn.
    • Đẩy sản phẩm hết hàng xuống cuối danh sách: Tự động chuyển các SKU tạm hết hàng về các trang phân trang cuối cùng để trang đầu danh mục luôn đạt tỷ lệ chuyển đổi và tín hiệu tương tác tích cực.
    • Loại bỏ các trang phân trang khỏi XML Sitemap: Chỉ đưa URL gốc của trang danh mục (trang 1) và toàn bộ URL trang chi tiết sản phẩm vào tệp Sitemap; không đưa các đường dẫn ?page=2, ?page=3 vào Sitemap.
    FAQ

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

    Giải đáp nhanh những điểm thương hiệu bán lẻ D2C, chuỗi cửa hàng đa chi nhánh, doanh nghiệp sản xuất – phân phối B2B và đơn vị xây dựng sàn giao dịch thương mại điện tử hay hỏi về chủ đề này.

    Google đã ngừng hỗ trợ thẻ rel=next và rel=prev từ lâu, vậy có cần xóa chúng khỏi mã nguồn không?

    Không cần xóa nếu website đã triển khai sẵn. Dù Google không còn sử dụng rel=next và rel=prev làm tín hiệu hợp nhất lập chỉ mục, nhưng các trình duyệt web hỗ trợ tiếp cận (Accessibility) và các công cụ tìm kiếm khác như Bing vẫn sử dụng hai thuộc tính này để hiểu mối quan hệ chuỗi trang.

    Có nên đặt thẻ noindex cho các trang từ trang 2 trở đi để tránh trùng lặp nội dung danh mục không?

    Không nên đặt noindex cho các trang phân trang. Danh sách sản phẩm ở trang 2 khác với trang 1 nên không bị coi là nội dung trùng lặp độc hại. Nếu gắn noindex lâu ngày, Google sẽ ngừng theo dõi cả các liên kết sản phẩm trên trang đó; thay vào đó hãy ẩn đoạn văn bản mô tả danh mục ở các trang từ trang 2 trở đi.

    Bao nhiêu sản phẩm trên một trang danh mục là hợp lý cho cả tốc độ tải và SEO?

    Mức từ 24 đến 48 sản phẩm trên mỗi trang là ngưỡng cân bằng hợp lý cho phần lớn website thương mại điện tử. Số lượng này đủ lớn để giảm tổng số trang phân trang (giảm độ sâu thu thập), đồng thời không làm cây DOM quá nặng gây ảnh hưởng đến chỉ số INP và LCP trên thiết bị di động.

    Nhận tư vấn & báo giá

    Nhận tư vấn kiến trúc & Báo giá chi tiết hệ thống Website Thương mại điện tử

    Hãy cho Uptech biết mô hình bán hàng của bạn (B2C, B2B hay Đa kho/Sàn), số lượng mã sản phẩm (SKU) dự kiến và các phần mềm cổng thanh toán, vận chuyển, ERP/POS cần kết nối. Kỹ sư giải pháp của Uptech sẽ phân tích và gửi bản đề xuất kiến trúc kèm dự toán chi phí minh bạch trong 24 giờ làm việc.

    • Phản hồi kèm sơ đồ kiến trúc đề xuất trong vòng 24 giờ làm việc
    • Tư vấn miễn phí lộ trình đồng bộ tồn kho ERP/POS và cấu trúc SEO danh mục lớn
    • Hợp đồng pháp nhân rõ ràng, bàn giao mã nguồn, xuất hóa đơn GTGT (VAT) đầy đủ
    Nhận tư vấn & báo giá

    Miễn phí khảo sát. Phản hồi trong ngày làm việc gần nhất.

    Bạn cần loại website nào?

    Hoặc nhắn Zalo / gọi 0961 163 961