Rendering phía khách hàng so với phía máy chủ: Hướng dẫn thực tiễn
Trình duyệt thu thập dữ liệu không có dữ liệu sẽ tạo nội dung JavaScript trong một trình duyệt đám mây, điều này cho phép các quy trình làm việc với dữ liệu xử lý cả HTML do máy chủ cung cấp và các giao diện do khách hàng xây dựng.
TL;DR
- CSR và SSR mô tả một phần quan sát được về cách thức hành vi của các trang web hoặc hệ thống web. Định nghĩa hữu ích liên kết khái niệm với dữ liệu, trạng thái và yêu cầu mà một quy trình làm việc có thể xác minh.
- HTML phản hồi và trạng thái trình duyệt không thể thay thế cho nhau. Một số giá trị có sẵn ngay lập tức, trong khi những giá trị khác yêu cầu rendering, tương tác, hoặc một phản hồi có cấu trúc sau đó.
- Chọn phương pháp nhẹ nhất trả về dữ liệu đầy đủ. Phân tích HTML khi nó đủ, kiểm tra các yêu cầu có cấu trúc khi thích hợp và sử dụng trình duyệt khi việc thực thi trình duyệt là cần thiết.
- Hoàn thành phải được chứng minh bằng chứng nội dung. Các định danh ổn định, các trạng thái cuối rõ ràng và các điều kiện sẵn sàng cụ thể nguồn an toàn hơn delay cố định.
- Thu thập có trách nhiệm tôn trọng các quy tắc truy cập và năng lực đã công bố. Tính khả dụng công cộng không loại bỏ các điều khoản, nghĩa vụ pháp lý, chỉ thị của robot, hoặc kiểm soát tần suất.
CSR và SSR là gì?
Rendering phía khách hàng và rendering phía máy chủ mô tả nơi mà một giao diện web được lắp ráp. CSR xây dựng phần lớn giao diện trong trình duyệt với JavaScript. SSR tạo HTML trên một máy chủ cho một yêu cầu và gửi mã đánh dấu đó tới trình duyệt. Sự khác biệt ảnh hưởng đến việc giao hàng đầu tiên, vị trí xử lý, chế độ thất bại, bộ nhớ đệm, lập chỉ mục và trích xuất.
Không có phương pháp nào tự động tốt hơn. Một bài viết công khai được hưởng lợi từ HTML ngay lập tức và bộ nhớ đệm. Một không gian làm việc nặng về tương tác có thể hưởng lợi từ trạng thái khách hàng và cập nhật giao diện cục bộ. Nhiều trang web sử dụng SSR hoặc HTML tĩnh cho giao diện nhập, sau đó làm ẩm các thành phần và chuyển sang rendering phía khách hàng cho việc điều hướng sau.
Đối với việc thu thập dữ liệu, sự so sánh là hoạt động. SSR thường lộ văn bản mục tiêu cho một trình phân tích HTTP trực tiếp. CSR có thể yêu cầu thực thi trình duyệt, tương tác hoặc phân tích các yêu cầu nền. Các trang lai yêu cầu kiểm tra cẩn thận vì một số bản ghi có trong phản hồi trong khi một số khác chỉ xuất hiện sau khi làm ẩm hoặc hành động của người dùng.
Sự phân biệt chính là thực tiễn: một quy trình làm việc dữ liệu nên xác định lớp mà sở hữu giá trị mục tiêu. Lớp đó có thể là phản hồi tài liệu, bộ nhớ trình duyệt, một nút đã được render, một phản hồi nền, hoặc một chính sách phía máy chủ. Khi lớp đã được biết đến, quy trình làm việc có thể thu thập giá trị với ít giả định hơn và xác thực nó với hành vi của trang mà người dùng thực sự nhận được.
Cách Csr và Ssr hoạt động
CSR và SSR trở nên dễ dàng hơn để lý luận khi quy trình được chia thành các giai đoạn quan sát được. Mỗi giai đoạn tạo ra bằng chứng có thể được kiểm tra trong phản hồi, trình duyệt, nhật ký mạng, hoặc tập hợp bản ghi đã được trích xuất.
SSR giải quyết giao diện trước khi giao hàng
Một máy chủ nhận được URL và ngữ cảnh yêu cầu, tải dữ liệu, tạo HTML, và trả về một tài liệu chứa nội dung chính. Trình duyệt có thể phân tích và hiển thị nội dung đó trước khi mã ứng dụng của khách hàng hoàn toàn hoạt động.
CSR giải quyết giao diện trong trình duyệt
Trình duyệt tải một tài liệu nhập và JavaScript, sau đó lấy dữ liệu và xây dựng giao diện. CPU thiết bị, kích thước gói tài nguyên, và lỗi của khách hàng đều ảnh hưởng đến thời điểm nội dung trở nên khả dụng.
Làm ẩm kết nối hai
Một trang lai có thể gửi HTML đã được máy chủ render và sau đó đính kèm trạng thái phía khách hàng và các trình xử lý sự kiện. Trang có thể trông hoàn chỉnh trước khi các điều khiển sẵn sàng, điều này tạo ra một trạng thái trung gian rõ ràng.
Điều hướng có thể thay đổi chế độ
Lộ trình ban đầu có thể được render bởi máy chủ trong khi các thay đổi lộ trình nội bộ diễn ra tại khách hàng. Do đó, một trang web có thể yêu cầu các chiến lược trích xuất khác nhau cho chế độ nhập và các chế độ tiếp theo.
Bộ nhớ đệm chuyển chi phí
Đầu ra SSR có thể được bộ nhớ đệm ở nhiều lớp, trong khi CSR có thể bộ nhớ đệm tài sản ứng dụng và dữ liệu. Sự trao đổi hiệu quả phụ thuộc vào tính mới, cá nhân hóa, hình dạng lưu lượng, và yêu cầu vô hiệu hóa.
Những giai đoạn này có thể chồng chéo, lặp lại, hoặc được xử lý bởi các hệ thống khác nhau. Kế hoạch trích xuất do đó nên theo trình tự yêu cầu và trạng thái thực tế thay vì giả định rằng một sự kiện tải trang đại diện cho toàn bộ vòng đời. Công cụ phát triển trình duyệt hữu ích vì chúng đặt tài liệu, mạng, lưu trữ, và chế độ xem thời gian chạy bên cạnh nhau.
Các hình thức chính và các khái niệm liên quan
Những phân biệt sau ngăn chặn các lỗi phân loại phổ biến. Chúng cũng giúp các nhóm chọn một trình phân tích, khách hàng HTTP, trình duyệt, lập lịch, hoặc chính sách thu thập cho công việc.
| Khái niệm | Nó đại diện cho điều gì | Sử dụng điển hình |
|---|---|---|
| Nội dung ban đầu | CSR có thể bắt đầu với một lớp vỏ | SSR thường bao gồm HTML chính |
| Xử lý phía khách hàng | CSR thực hiện nhiều công việc về giao diện hơn trong trình duyệt | SSR thực hiện nhiều công việc về giao diện hơn trên máy chủ |
| Trích xuất HTML trực tiếp | CSR có thể bỏ qua các bản ghi mục tiêu | SSR thường lộ bản ghi ngay lập tức |
| Tính tương tác | CSR một cách tự nhiên sở hữu trạng thái khách hàng lâu dài | SSR thường thêm các tập lệnh khách hàng hoặc nâng cao tiến bộ |
| Chế độ lỗi | Yêu cầu gói hoặc dữ liệu có thể để lại lớp vỏ trống | Kết xuất máy chủ có thể trì hoãn hoặc không trả lời tài liệu |
Một nhãn chỉ hữu ích khi nó dự đoán hành vi. Nếu hai lộ trình trên cùng một trang web trả về dữ liệu thông qua các lớp khác nhau, hãy coi chúng là các bề mặt trích xuất khác nhau ngay cả khi nhóm sản phẩm mô tả chúng bằng một thuật ngữ kiến trúc duy nhất. Quan sát cấp lộ trình tốt hơn giả định trên toàn miền.
Tại sao điều này lại quan trọng đối với việc thu thập dữ liệu web và thu thập thông tin
Việc thu thập web thất bại một cách âm thầm khi nó đọc lớp sai. Một bộ phân tích có thể trả về HTML hợp lệ mà thiếu các bản ghi mục tiêu. Một trình duyệt có thể kết xuất một lớp vỏ thuyết phục trong khi một yêu cầu cần thiết bị từ chối. Một chuỗi có thể trả về các lô đầy đủ trong khi lặp lại các bản ghi giống nhau. Các kiểm tra dưới đây kết nối kết xuất phía khách hàng với kết xuất phía máy chủ đến chất lượng dữ liệu thay vì sở thích công cụ.
Chọn theo chứng cứ
Lấy HTML thô, kết xuất trang và so sánh các trường mục tiêu. Sự khác biệt cho bạn biết lớp nào góp phần vào dữ liệu.
Sử dụng phương pháp hợp lệ nhẹ nhất
Phân tích HTML do máy chủ cung cấp khi nó hoàn chỉnh. Sử dụng trình duyệt chỉ cho các lộ trình, trạng thái hoặc tương tác cần thiết.
Xác thực tính sẵn sàng lai
Trên các trang đã được ẩm ướt, chờ cả nội dung và trạng thái tương tác cụ thể cần thiết cho quy trình làm việc.
Bảo tồn nguồn gốc
Ghi lại xem mỗi trường đến từ HTML phản hồi, DOM đã kết xuất, hay dữ liệu mạng có cấu trúc để các khác biệt sau này có thể được điều tra.
Một trình duyệt là một tùy chọn bên trong cây quyết định đó. Trang sản phẩm Scrapeless Scraping Browser miêu tả bề mặt trình duyệt được quản lý, trong khi tài liệu bắt đầu cho Scraping Browser bao gồm các tham số kết nối và phiên. Sử dụng kết xuất trình duyệt chỉ cho các trạng thái cần thực thi trình duyệt, và giữ các đường dẫn thu thập và phân tích đơn giản hơn cho nội dung đã có sẵn trong các phản hồi.
Một Quy Trình Chẩn Đoán Thực Tế
Một chẩn đoán đáng tin cậy bắt đầu bằng việc so sánh, không phải mã tự động hóa. Bảo tồn phản hồi đầu tiên, quan sát giao diện trực tiếp, và kết nối mỗi trường mục tiêu với sự kiện hoặc tài nguyên tạo ra nó.
- Yêu cầu URL với một khách hàng HTTP đơn giản và lưu trữ phản hồi. Tìm kiếm văn bản mục tiêu, liên kết, định danh và siêu dữ liệu thay vì chỉ đánh giá theo kích thước tài liệu.
- Kết xuất cùng một URL trong một ngữ cảnh trình duyệt sạch sẽ. So sánh số lượng bản ghi và các trường chính giữa phản hồi và DOM trực tiếp.
- Kiểm tra thác nước cho tài liệu, tập lệnh và yêu cầu dữ liệu. Một gói ứng dụng lớn theo sau là các yêu cầu JSON gợi ý công việc của khách hàng có ý nghĩa.
- Kiểm tra một liên kết sâu, một tải lại cứng và một điều hướng nội bộ. Các đường dẫn này có thể sử dụng các chế độ kết xuất khác nhau ngay cả khi màn hình trông giống nhau.
- Đo lường tính đầy đủ của dữ liệu và hành vi lỗi trước khi tối ưu hóa tốc độ. Một bộ phân tích nhanh hơn không hữu ích nếu nó nhất quán bỏ sót một trường chỉ của khách hàng.
Ghi lại kết quả dưới dạng một hợp đồng trích xuất nhỏ: mẫu URL mục tiêu, ngữ cảnh công khai, lớp nguồn, điều kiện sẵn sàng, bộ chọn hoặc trường phản hồi, khóa duy nhất, quy tắc tiếp tục, quy tắc kết thúc, và các kiểm tra xác thực. Hợp đồng này bền hơn một kịch bản chứa cùng các giả định mà không đặt tên cho chúng.
Sử dụng bằng chứng từ tài liệu kỹ thuật chính khi xác định hợp đồng. Những nền tảng phù hợp cho chủ đề này bao gồm so sánh các mô hình kết xuất web trên web.dev hướng dẫn của Google cho các trang web đã được kết xuất bằng JavaScript. Những nguồn đó mô tả hành vi nền tảng và giao thức; hành vi trực tiếp của trang web mục tiêu vẫn cần quan sát riêng.
Những Sai Lầm Thông Thường
Hầu hết các thất bại xung quanh kết xuất phía khách hàng và phía máy chủ đến từ việc thay thế một tín hiệu thuận tiện cho trạng thái thực tế mà quy trình làm việc cần. Những sai lầm sau đây có thể trả về kết quả hợp lý, điều này khiến chúng nguy hiểm hơn một lỗi hiển nhiên.
- Gán nhãn toàn bộ miền là CSR hoặc SSR che giấu sự khác biệt cấp lộ trình và cấp thành phần.
- Xem xét HTML nhìn thấy là tương tác có thể gây tự động hóa nhấp trước khi sự ẩm ướt hoàn tất.
- Giả định SSR loại bỏ JavaScript bỏ qua các bộ lọc, widget và điều hướng sau này phía khách hàng.
- Giả định CSR luôn cần tự động hóa toàn bộ trình duyệt bỏ qua các điểm cuối có cấu trúc hữu ích và trạng thái nhúng.
- So sánh chỉ thời gian tải trung bình sẽ bỏ lỡ sự khác biệt về thiết bị, bộ nhớ cache và tính đầy đủ của nội dung.
Bảo vệ chống lại những thất bại này với các khẳng định ở cấp nội dung. Yêu cầu một container đã biết, ít nhất một khóa ổn định khi kết quả được mong đợi, không có khóa trùng lặp trong một lô, thứ tự nhất quán khi thứ tự quan trọng, và một trạng thái trống hoặc kết thúc được công nhận.
Thực Hành Tốt Nhất cho Một Quy Trình Duy Trì
Ưu tiên ý nghĩa ổn định hơn vị trí trực quan. Các bộ chọn và quy tắc nên mô tả vai trò của một giá trị, không phải vị trí tạm thời của nó trong một bố cục. Khi một phản hồi có cấu trúc là nguồn công khai chính thức được sử dụng bởi trang, hãy giữ lại việc ánh xạ trường liên quan và xác thực nó với nhãn đã kết xuất.
Làm trạng thái rõ ràng. Ghi lại khu vực, khung nhìn, lộ trình, giả định về phiên công khai, các bộ lọc, thứ tự sắp xếp và các giá trị tiếp tục. Một giá trị không có trạng thái của nó có thể không thể so sánh với một bản chụp sau này.
Tách rời khám phá, lấy dữ liệu, hiển thị và trích xuất. Mỗi giai đoạn có chi phí và chế độ lỗi khác nhau. Việc tách rời cho phép một công việc chỉ hiển thị những URL cần thiết, xử lý lại các phản hồi đã lưu mà không có lưu lượng mới và kiểm tra các hồ sơ chưa hoàn chỉnh trước khi chúng vào hệ thống hạ nguồn.
Sử dụng công việc có giới hạn. Xác định số trang tối đa, hành động cuộn, yêu cầu hoạt động và hồ sơ cho mỗi lần chạy. Giới hạn bảo vệ cả dịch vụ mục tiêu và hệ thống thu thập khi một vòng điều khiển tiếp theo, một con trỏ lặp lại hoặc một trang tạo ra không gian thu thập không mong đợi.
Tôn trọng nhà xuất bản và người dùng. Kiểm tra robots.txt nơi có thể áp dụng, tuân thủ các điều khoản và pháp luật, chỉ thu thập các trường công cộng cần thiết cho một mục đích được xác định, tránh các khu vực riêng tư hoặc bị hạn chế, và giữ khối lượng yêu cầu trong phạm vi bảo thủ.
Kết luận
Csr và ssr là mô hình hoạt động hữu ích nhất: xác định nơi dữ liệu tồn tại, quan sát cách trạng thái đó được tạo ra, và chọn phương pháp thu thập nhỏ nhất có thể tái hiện nó. Quy trình làm việc mạnh mẽ nhất so sánh trạng thái nguồn và trạng thái đã hiển thị, theo dõi các tín hiệu tiếp tục rõ ràng, và xác thực các hồ sơ với các khóa bền vững.
Bắt đầu với một URL đại diện và viết hợp đồng trích xuất trước khi mở rộng. Bước nhỏ đó phơi bày thời gian, định tuyến, phân trang, và giả định chính sách ẩn mà chúng vẫn còn rẻ để sửa chữa. Mở rộng chỉ sau khi quy trình làm việc có thể giải thích lý do mỗi hồ sơ hoàn chỉnh và nơi mỗi trường đến từ.
Sẵn sàng kiểm tra các trang do JavaScript điều khiển?
Sử dụng Scrapeless Scraping Browser khi một trang công cộng cần thực hiện trình duyệt, tương tác, hoặc kiểm tra trạng thái đã hiển thị.
Bắt đầu miễn phí →Câu hỏi thường gặp
Khách hàng bên hay máy chủ bên nào tốt hơn?
Cả hai đều không tốt hơn một cách phổ quát. SSR phù hợp với nội dung nên xuất hiện dưới dạng HTML, trong khi CSR phù hợp với các giao diện tương tác lâu dài; kết xuất lai là phổ biến khi một sản phẩm cần cả hai.
Chế độ kết xuất nào dễ dàng hơn để thu thập dữ liệu?
SSR thường dễ dàng hơn vì nội dung chính ở trong HTML phản hồi. CSR có thể yêu cầu kết xuất hoặc phân tích yêu cầu có cấu trúc, nhưng trang cụ thể nên được thử nghiệm.
Một trang có thể sử dụng cả CSR và SSR không?
Có. Một máy chủ có thể kết xuất HTML ban đầu, và JavaScript của khách hàng có thể làm giàu nó, cập nhật các widget, và xử lý các thay đổi tuyến đường sau đó.
Một trình thu thập dữ liệu nên phát hiện chế độ kết xuất như thế nào?
So sánh HTML phản hồi với DOM đã hiển thị, kiểm tra yêu cầu dữ liệu, và thử nghiệm cả đầu vào trực tiếp và điều hướng nội bộ. Bằng chứng thời gian chạy đáng tin cậy hơn một nhãn khung.