Chuyên đề của tháng 12 về thu thập dữ liệu: CDN và hoạt động thu thập dữ liệu

Thứ Ba, ngày 24 tháng 12 năm 2024

Mạng phân phối nội dung (CDN) đặc biệt phù hợp để giảm độ trễ của trang web và giúp bạn tránh các vấn đề nan giải liên quan đến lưu lượng truy cập web nói chung. Xét cho cùng, đây là mục đích chính của mạng lưới này là: phân phối nội dung nhanh chóng ngay cả khi trang web của bạn nhận được rất nhiều lưu lượng truy cập. Từ "D" trong CDN là chỉ hoạt động phân phát hoặc phân phối nội dung trên toàn thế giới; thế nên thời gian chuyển nội dung đến với người dùng cũng thấp hơn so với việc chỉ lưu trữ ở một trung tâm dữ liệu ở một nơi nào đó. Trong bài đăng này, chúng ta sẽ cùng tìm hiểu cách sử dụng CDN để cải thiện hoạt động thu thập dữ liệu và trải nghiệm của người dùng trên trang web, đồng thời xem xét một số điểm khác biệt khi thu thập dữ liệu trên các trang web có hỗ trợ CDN.

Tóm tắt: CDN là gì?

Về cơ bản, CDN là một bên trung gian giữa máy chủ gốc (nơi lưu trữ trang web của bạn) và người dùng cuối, đồng thời phân phát (một số) tệp cho hai bên. Trước đây, CDN chú trọng nhiều nhất vào việc lưu vào bộ nhớ cache, nghĩa là sau khi người dùng yêu cầu một URL từ trang web của bạn, CDN sẽ lưu trữ nội dung của URL đó trong bộ nhớ cache trong một khoảng thời gian để máy chủ của bạn không phải phân phát lại tệp đó.

CDN có thể tăng tốc đáng kể cho trang web của bạn bằng cách phân phát nội dung cho người dùng từ một vị trí gần họ. Giả sử nếu một người dùng ở Úc đang truy cập vào một trang web được lưu trữ ở Đức, thì CDN sẽ phân phát cho người dùng đó nội dung từ bộ nhớ cache ở Úc, giúp giảm thiểu số lần truyền dữ liệu qua lại trên toàn cầu. Dù dữ liệu có truyền theo tốc độ ánh sáng hay không, khoảng cách đó vẫn khá lớn.

Sau cùng, CDN là một công cụ tuyệt vời để bảo vệ trang web của bạn khỏi tình trạng quá tải và một số mối đe doạ về bảo mật. Với lượng lưu lượng truy cập toàn cầu hiện đang quản lý, các CDN có thể xây dựng các mô hình lưu lượng truy cập đáng tin cậy để phát hiện những điểm bất thường về lưu lượng truy cập và chặn các lượt truy cập có vẻ như vượt mức hoặc độc hại. Ví dụ: vào ngày 21 tháng 10 năm 2024, các hệ thống của Cloudflare đã tự động phát hiện và giảm thiểu một cuộc tấn công DDoS có lưu lượng 4,2 Tbps (theo đánh giá của người biên tập là rất lớn) kéo dài khoảng một phút.

Cách CDN có thể trở nên hữu ích cho trang web của bạn

Bạn sẽ dùng được những máy chủ nhanh nhất và đường truyền tải lên tốt nhất trên thị trường, nhanh đến nỗi có thể bạn sẽ không cho rằng vẫn có chỗ cần phải tăng tốc. Tuy nhiên, CDN có thể giúp bạn tiết kiệm tiền về lâu dài, đặc biệt là khi trang web của bạn có quy mô lớn:

  • Hoạt động lưu vào bộ nhớ cache trên CDN: Nếu các tài nguyên như nội dung đa phương tiện, JavaScript và CSS hoặc thậm chí là HTML được phân phát từ bộ nhớ cache của CDN, thì máy chủ của bạn không phải tốn tài nguyên điện toán và băng thông để phân phát các tài nguyên đó, từ đó giảm tải máy chủ trong quá trình này. Điều này thường cũng có nghĩa là các trang tải nhanh hơn trong trình duyệt của người dùng, tức là sẽ dẫn đến việc tăng số lượt chuyển đổi.
  • Bảo vệ khỏi tình trạng quá tải vì lưu lượng truy cập lớn: CDN đặc biệt hiệu quả trong việc xác định và chặn lưu lượng truy cập quá mức hoặc độc hại, cho phép người dùng truy cập vào trang web của bạn ngay cả khi các bot hoặc kẻ xấu hoạt động sai cách làm máy chủ của bạn quá tải.
    Ngoài tính năng Bảo vệ khỏi tình trạng quá tải vì lưu lượng truy cập lớn, bạn cũng có thể sử dụng các cơ chế kiểm soát dùng để chặn lưu lượng truy cập xấu để chặn những lưu lượng truy cập mà mình không mong muốn, chẳng hạn như lưu lượng truy cập của một số trình thu thập dữ liệu, ứng dụng khách có cách hoạt động giống với một mẫu nhất định hoặc đơn giản là những kẻ phá rối liên tục sử dụng cùng một địa chỉ IP. Mặc dù bạn cũng có thể thực hiện việc này trên máy chủ hoặc tường lửa, nhưng thường thì sử dụng giao diện người dùng của CDN sẽ dễ dàng hơn nhiều.
  • Mức độ tin cậy: Một số CDN có thể phân phát trang web của bạn cho người dùng ngay cả khi trang web gặp sự cố. Tất nhiên, có thể điều này chỉ đúng đối với nội dung tĩnh, nhưng có thể đã đủ để đảm bảo rằng người dùng không chuyển sang sử dụng dịch vụ của đối thủ cạnh tranh.

Tóm lại, CDN chính là người bạn đồng hành của bạn. Nếu trang web của bạn có quy mô lớn hoặc bạn dự kiến là sẽ (hoặc thậm chí là đang!) đón nhận lưu lượng truy cập lớn, bạn nên tìm một CDN phù hợp với nhu cầu của mình dựa trên các yếu tố như mức giá, hiệu suất, mức độ tin cậy, bảo mật, dịch vụ hỗ trợ khách hàng, khả năng thay đổi quy mô, khả năng mở rộng trong tương lai. Hãy liên hệ với nhà cung cấp dịch vụ lưu trữ hoặc CMS để tìm hiểu các lựa chọn của bạn (và liệu bạn có đang sử dụng một trong các lựa chọn đó hay không).

Cách hoạt động thu thập dữ liệu ảnh hưởng đến các trang web có dùng CDN

Về mặt thu thập dữ liệu, có thể CDN sẽ hữu ích, nhưng cũng có khả năng gây ra một số vấn đề về hoạt động thu thập dữ liệu (mặc dù hiếm khi xảy ra). Hãy tiếp tục theo dõi phần trình bày tiếp theo của chúng tôi.

Ảnh hưởng của CDN đến tốc độ thu thập dữ liệu

Cơ sở hạ tầng thu thập dữ liệu của chúng tôi được thiết kế để cho phép đạt được tốc độ thu thập dữ liệu cao hơn trên các trang web được hỗ trợ bởi CDN. Chúng tôi suy diễn ra điều này từ địa chỉ IP của dịch vụ đang phân phát các URL mà trình thu thập dữ liệu của chúng tôi đang truy cập. Điều này khá là tốt, ít nhất là trong hầu hết trường hợp.

Giả sử hôm nay bạn mở một trang web ảnh lưu trữ và tình cờ có 1.000.007 bức ảnh trong kho. Bạn sẽ ra mắt trang web có một trang đích, nhiều trang danh mục và trang chi tiết cho tất cả nội dung của mình — do đó, bạn sẽ có rất nhiều trang. Trong tài liệu về giới hạn dung lượng thu thập dữ liệu, chúng tôi giải thích rằng mặc dù Google Tìm kiếm muốn thu thập dữ liệu tất cả trang này nhanh nhất có thể, nhưng hoạt động thu thập dữ liệu cũng không được làm máy chủ của bạn quá tải. Nếu máy chủ của bạn bắt đầu phản hồi chậm khi số lượng yêu cầu thu thập dữ liệu phải xử lý tăng lên, thì Google sẽ áp dụng biện pháp điều tiết để tránh làm máy chủ của bạn quá tải. Ngưỡng giới hạn đối với hoạt động điều tiết này cao hơn nhiều khi cơ sở hạ tầng thu thập dữ liệu của chúng tôi phát hiện thấy trang web của bạn được CDN hỗ trợ và giả định rằng cùng một lúc bạn có thể gửi nhiều yêu cầu hơn vì máy chủ của bạn có nhiều khả năng xử lý được, nhờ đó hoạt động thu thập dữ liệu trang web thương mại của bạn diễn ra nhanh hơn.

Tuy nhiên, trong lần truy cập đầu tiên vào một URL, bộ nhớ cache của CDN sẽ ở trạng thái "nguội", nghĩa là vì chưa có ai yêu cầu URL đó nên nội dung của URL đó chưa được CDN lưu vào bộ nhớ cache, nên máy chủ gốc của bạn vẫn cần phân phát URL đó ít nhất một lần để "làm nóng" bộ nhớ cache của CDN. Cách thức hoạt động của bộ nhớ cache HTTP cũng rất giống vậy.

Tóm lại, ngay cả khi cửa hàng trên web của bạn được CDN hỗ trợ, máy chủ của bạn vẫn cần phân phát 1.000.007 URL đó ít nhất một lần. Chỉ sau lần phân phát ban đầu đó, bộ nhớ cache của CDN mới giúp ích cho bạn. Đây sẽ là một gánh nặng đáng kể cho "hạn mức thu thập dữ liệu" và tốc độ thu thập dữ liệu có thể sẽ cao trong vài ngày; hãy lưu ý điều này nếu bạn dự định ra mắt nhiều URL cùng một lúc.

Ảnh hưởng của CDN đối với hoạt động kết xuất

Như chúng tôi đã giải thích trong bài đăng đầu tiên trên blog trong Chuyên đề của tháng 12 về về hoạt động thu thập dữ liệu, cụ thể là về hoạt động thu thập dữ liệu tài nguyên, việc tách các tài nguyên theo tên máy chủ riêng hoặc tên máy chủ CDN (cdn.example.com) có thể cho phép Dịch vụ kết xuất trang web (WRS) kết xuất trang của bạn hiệu quả hơn. Tuy nhiên, bạn cần lưu ý rằng: do mức hao tổn khi kết nối với một tên máy chủ khác nên phương pháp này có thể ảnh hưởng tiêu cực đến hiệu suất trang. Vì vậy, bạn cần cân nhắc kỹ trải nghiệm trang với hiệu suất kết xuất.

Nếu sử dụng CDN để sao lưu máy chủ lưu trữ chính, bạn sẽ tránh được vấn đề này: một tên máy chủ để truy vấn và các tài nguyên kết xuất quan trọng có thể được phân phát từ bộ nhớ cache của CDN để máy chủ của bạn không cần phân phát các tài nguyên đó (và không ảnh hưởng gì đến trải nghiệm trên trang).

Cuối cùng, hãy chọn giải pháp phù hợp nhất với doanh nghiệp của bạn: dùng một tên máy chủ riêng (cdn.example.com) cho tài nguyên tĩnh, sao lưu tên máy chủ chính bằng CDN hoặc thực hiện cả hai. Cơ sở hạ tầng thu thập dữ liệu của Google hỗ trợ cả hai lựa chọn này mà không gặp vấn đề gì.

Trường hợp CDN bảo vệ quá mức

Nhờ có tính năng Bảo vệ khỏi tình trạng quá tải vì lưu lượng truy cập lớn của CDN và cách thức thu thập dữ liệu của các trình thu thập dữ liệu, đôi khi, các bot mà bạn muốn có trên trang web của mình có thể bị đưa vào danh sách chặn của CDN, thường là trong Tường lửa ứng dụng web (WAF). Điều này ngăn trình thu thập dữ liệu truy cập vào trang web của bạn, cuối cùng có thể khiến trang web của bạn không xuất hiện trong kết quả tìm kiếm. Tình trạng chặn có thể xảy ra dưới nhiều hình thức, một số hình thức sẽ gây hại nhiều hơn đối với sự hiện diện của trang web trong kết quả tìm kiếm của Google so với các hình thức khác. Có thể bạn sẽ khó mà (hoặc không thể) kiểm soát tình trạng này vì quá trình này xảy ra ở phía CDN. Trong bài đăng này, chúng tôi sẽ chia các hình thức chặn này thành hai nhóm: chặn cứng và chặn mềm.

Chặn cứng

Lệnh chặn cứng là khi CDN gửi phản hồi đối với một yêu cầu thu thập dữ liệu có một hình thức lỗi nào đó. Đó có thể là:

  • Mã trạng thái HTTP 503/429: Việc gửi các mã trạng thái này là cách ưu tiên để báo hiệu việc chặn tạm thời. Bạn sẽ có thời gian để xử lý các lệnh chặn không mong muốn do CDN thực hiện.
  • Thời gian chờ mạng: Thời gian chờ mạng từ CDN sẽ khiến các URL bị ảnh hưởng bị xoá khỏi chỉ mục của Google Tìm kiếm, vì những lỗi mạng này được coi là lỗi "cứng", nghiêm trọng. Ngoài ra, có thể các lỗi này cũng sẽ ảnh hưởng đáng kể đến tốc độ thu thập dữ liệu của trang web vì đó là dấu hiệu cho cơ sở hạ tầng thu thập dữ liệu của chúng tôi thấy rằng trang web đang quá tải.
  • Thông báo lỗi ngẫu nhiên có mã trạng thái HTTP 200: Còn gọi là lỗi mềm, đây là lỗi đặc biệt nghiêm trọng. Nếu thông báo lỗi được Google xem là lỗi "cứng" (ví dụ: HTTP 500), Google sẽ xoá URL đó khỏi Tìm kiếm. Nếu Google không nhận diện được thông báo lỗi đó là lỗi "cứng", thì có thể tất cả trang có cùng thông báo lỗi sẽ bị xoá khỏi chỉ mục của Google Tìm kiếm vì trùng lặp. Vì hoạt động lập chỉ mục của Google không có nhiều động lực để yêu cầu thu thập lại dữ liệu các URL trùng lặp, nên việc khắc phục vấn đề này có thể sẽ mất nhiều thời gian hơn.

Chặn mềm

Một vấn đề tương tự có thể sẽ "trỗi dậy" (dùng từ chơi chữ) khi CDN của bạn hiển thị các quảng cáo xen kẽ kiểu "bạn có chắc mình là con người không".

Crawley bối rối khi được gọi là con người

Thực tế sẽ thuyết phục bạn rằng trình thu thập dữ liệu của chúng tôi KHÔNG phải là con người và không giả vờ là con người. Các trình này chỉ muốn thu thập dữ liệu. Tuy nhiên, khi quảng cáo xen kẽ xuất hiện, đó là tất cả những gì mà các trình thu thập dữ liệu thấy, chứ không phải trang web tuyệt vời của bạn. Nếu sử dụng các quảng cáo xen kẽ để xác minh bot này, bạn nên gửi một tín hiệu rõ ràng dưới dạng mã trạng thái HTTP 503 cho các ứng dụng tự động như trình thu thập dữ liệu rằng tạm thời không có nội dung này. Điều này sẽ đảm bảo rằng nội dung không bị tự động xoá khỏi chỉ mục của Google.

Gỡ lỗi tình trạng chặn

Trong trường hợp gặp cả tình trạng chặn cứng và mềm, cách dễ nhất để kiểm tra xem mọi thứ có hoạt động đúng cách hay không là sử dụng Công cụ kiểm tra URL trong Search Console và quan sát hình ảnh được kết xuất: nếu hình ảnh đó cho thấy trang của bạn, thì mọi việc đều ổn; còn nếu hình ảnh đó cho thấy một trang trống, lỗi hoặc trang có thử thách dành cho bot, thì bạn nên trao đổi với phía CDN về vấn đề này.

Ngoài ra, để giúp bạn giải quyết những trường hợp chặn ngoài ý muốn này, Google, các công cụ tìm kiếm khác và các nhà cung cấp dịch vụ thu thập dữ liệu khác có phát hành danh sách các địa chỉ IP của chúng tôi để giúp bạn xác định đâu là trình thu thập dữ liệu của chúng tôi. Và nếu thấy phù hợp, bạn hãy xoá các địa chỉ IP bị chặn khỏi quy tắc WAF hoặc thậm chí đưa các địa chỉ IP đó vào danh sách cho phép. Nơi mà bạn có thể thực hiện việc này sẽ tuỳ thuộc vào CDN mà bạn đang sử dụng; may mắn là hầu hết CDN và WAF độc lập đều có tài liệu hướng dẫn rất rõ ràng. Sau đây là một số ví dụ mà chúng tôi tìm được sau khi tìm kiếm đôi chút (tính đến thời điểm đăng bài này):

Nếu muốn trang web của bạn xuất hiện trong công cụ tìm kiếm, bạn nên kiểm tra xem các trình thu thập dữ liệu mà mình quan tâm có truy cập được vào trang web của bạn hay không. Hãy nhớ rằng các địa chỉ IP có thể được thêm vào danh sách chặn mà bạn không hề hay biết. Vì vậy, bạn nên thường xuyên kiểm tra danh sách chặn để trang web của mình hoạt động hiệu quả trên Tìm kiếm và các nền tảng khác. Nếu thấy danh sách chặn quá dài (giống như bài đăng trên blog này), hãy thử tìm kiếm một số đoạn đầu tiên của các dải IP (chẳng hạn như thay vì tìm 192.168.0.101, bạn chỉ cần tìm 192.168).

Đây là bài đăng sau cùng trong loạt bài đăng trên blog Chuyên đề của tháng 12 về thu thập dữ liệu. Chúng tôi hy vọng bạn cháy chung niềm đam mê với những bài đăng này, cũng như chúng tôi trong quá trình viết bài. Nếu bạn có... vân vân và mây mây... bạn biết quy trình này mà.


Bạn muốn tìm hiểu thêm về hoạt động thu thập dữ liệu? Xem toàn bộ loạt bài Chuyên đề của tháng 12 về thu thập dữ liệu: