Kết xuất

Cách Google Web Kết xuất Service chạy của bạn JavaScript để xây dựng đó trang điều này indexes — plus đó kết xuất options (CSR, SSR, SSG, hydration, ISR, edge, dynamic) và của họ SEO trade-offs.

Xuất bản lần đầu: 23 thg 6, 2026 · Cập nhật lần cuối: 8 thg 8, 2026 · Advanced
Ngôn ngữ
1 tín hiệu bằng chứng trên trang này

Kết xuất là đó step nơi Google chạy của bạn JavaScript trong an evergreen, headless Chrome — đó Web Kết xuất Service — để xây dựng đó DOM điều này indexes. Điều này happens cho essentially mỗi trang, thường trong seconds-để-minutes, so đó old 'hai waves of lập chỉ mục' model là largely outdated và có không theo-trang render budget. Đó renderer là stateless, không interact với đó trang, và caches hard. Của bạn kết xuất option decides của bạn SEO risk: SSR, static/prerendering, và hydration là safe; đầy đủ client-side kết xuất là đó risky một; dynamic kết xuất là một workaround.

TL;DR — Google renders của bạn JS trong an evergreen, headless Chromium — đó Web Kết xuất Service — để xây dựng đó DOM điều này indexes. Điều này happens cho essentially all các trang, thường trong seconds-để-minutes, so “two waves of indexing” (bản dịch) «hai waves of lập chỉ mục» là largely outdated và có không theo-trang render budget. Đó WRS là stateless, declines permission prompts, không interact với đó trang, và caches aggressively. Của bạn kết xuất option decides của bạn SEO risk: SSR / static / prerendering / hydration là thấp-risk; đầy đủ CSR là đó risky một; dynamic kết xuất là một workaround Google advises so với. Cho đó practical JS các vấn đề này tạo, see JavaScript SEO.

nơi kết xuất sits

Google là rõ ràng đó JavaScript apps move qua three phases: “Google processes JavaScript web apps in three main phases: 1. Crawling 2. Rendering 3. Indexing.” (bản dịch) «Google xử lý JavaScript web apps trong three main phases: 1. Crawling 2. Kết xuất 3. Lập chỉ mục.» Evidence for this claim Google documents crawling, rendering, and indexing as the three main phases for processing JavaScript web apps. Scope: Google Search processing of JavaScript web applications; the phases can overlap operationally. Confidence: high · Verified: Google Search Central: Understand the JavaScript SEO basics Kết xuất là đó bridge. Crawling fetches đó thô HTML; kết xuất chạy đó JavaScript để xây dựng đó finished DOM; lập chỉ mục đọc đó được kết xuất DOM, và bất kỳ new links đó renderer tìm thấy nhận fed lại vào crawling. Trong Google words: “During the crawl, Google renders the page and runs any JavaScript it finds using a recent version of Chrome, similar to how your browser renders pages you visit.” (bản dịch) «During đó crawl, Google renders đó trang và chạy bất kỳ JavaScript điều này tìm thấy dùng một gần đây version of Chrome, similar để cách trình duyệt của bạn renders các trang bạn visit.»

Rendering is the bridge between fetching a URL and indexing its finished DOM; parity, interaction, state, and timing can break that bridge. Nguồn: JavaScript SEO

Google crawls a URL, renders its JavaScript to build the DOM, and indexes the result. Four practical failure modes branch from rendering: parity when the rendered DOM differs from expectations, interaction when content requires a scroll or click, state when content relies on cleared cookies or storage, and timing when content is deferred behind slow JavaScript.

© Patrick Stox LLC · CC BY 4.0 ·

Web Kết xuất Service

Google renders trong đó Web Kết xuất Service (WRS) — một headless Chrome đó là evergreen: “While Google Search runs JavaScript with an evergreen version of Chromium…” (bản dịch) «Trong khi Google Search chạy JavaScript với an evergreen version of Chromium…» điều này tracks hiện tại Chrome, so modern JavaScript và CSS features hoạt động.

catch là đó WRS là peculiar trình duyệt, và của nó quirks nguyên nhân phần lớn thực các vấn đề:

  • đây là stateless. As I put điều này trong my JavaScript SEO hướng dẫn, “Google loads each page stateless like it’s a fresh load.” (bản dịch) «Google loads mỗi trang stateless như đây là một fresh load.» Google tài liệu spell out đó pieces: “Local Storage and Session Storage data are cleared across page loads” (bản dịch) «Local Storage và Session Storage dữ liệu là cleared trên trang loads»“HTTP Cookies are cleared across page loads.” (bản dịch) «HTTP Cookies là cleared trên trang loads.» không rely on bất cứ điều gì persisted client-side để serve nội dung của bạn.
  • Điều này declines permissions. “Expect Googlebot to decline user permission requests.” (bản dịch) «Expect Googlebot để decline người dùng permission các yêu cầu.» Nội dung gated behind một geolocation, notification, hoặc camera prompt sẽ không render.
  • Điều này không interact. Không scrolling, clicking, hoặc hovering — so nội dung đó chỉ loads on một of những events là invisible theo mặc định. (Này là đó root of hầu hết lazy-load và infinite-scroll bugs; đó các cách sửa trực tiếp on đó JavaScript SEO trang.)
  • Điều này caches aggressively. “Googlebot caches aggressively in order to reduce network requests and resource usage. WRS may ignore caching headers.” (bản dịch) «Googlebot caches aggressively trong order để reduce network các yêu cầu và tài nguyên usage. WRS có thể bỏ qua bộ nhớ đệm các header.» Đó có nghĩa là Google có thể chạy an outdated version of của bạn JS hoặc CSS. Cách sửa điều này với file fingerprinting — version của bạn filenames (app.4f2a9c.js) so một nội dung thay đổi forces một fresh fetch.

2026 thử nghiệm: five seconds không phải hard execution wall

thứ ba-party WRS thử nghiệm reported trong July 2026 tested delayed JavaScript và network activity thay vì assuming five-thứ hai timeout. observed renderer được sử dụng virtual clock và đã hoàn tất delayed các yêu cầu đó took khoảng 6–12 seconds của thực time. hữu ích kết quả là hẹp: nó contradicts phổ biến audit rule đó bất cứ điều gì occurring sau khi chính xác five seconds là tự động invisible để Google. nó làm không prove đó mỗi delayed dependency sẽ finish, đó Google chờ indefinitely, hoặc đó chậm client-side phân phối là safe.

Đọc đó thử nghiệm và của nó methodology as bên thứ ba evidence alongside Google chính thức statement đó render-queue timing có không published fixed delay. Trong thực tế, kiểm thử đó cuối DOM và requested các tài nguyên. MỘT bị thiếu API phản hồi, interaction requirement, blocked script, hoặc state dependency vẫn một real kết xuất failure ngay cả khi một stopwatch-based “five-second rule” (bản dịch) «five-second rule» không phải.

Là “two waves of indexing” (bản dịch) «hai waves of lập chỉ mục» vẫn một điều?

Cho năm đó mental model đã là “two waves of indexing” (bản dịch) «hai waves of lập chỉ mục»: Google sẽ chỉ mục đó thô HTML đầu tiên, thì come lại days hoặc weeks sau đó để render và chỉ mục đó JavaScript nội dung. Đó model là hiện tại largely outdated. Martin Splitt có đã nói đó hai-waves ý tưởng plays ít hơn và ít hơn of một role, đó nhiều các trang go qua đó render phase ngay cả khi they không rely on JavaScript, và đó crawling, kết xuất, và lập chỉ mục là converging theo thời gian.

Trong thực tế, kết xuất happens cho essentially mỗi trang, và đây là thường fast. Google hiện tại tài liệu says một được crawl trang “may stay on this queue for a few seconds, but it can take longer than that” (bản dịch) «có thể stay on này queue cho vài seconds, nhưng điều này có thể take lâu hơn đó» — có không published fixed delay hoặc timeout. Evidence for this claim Google says a crawled page may stay on the rendering queue for a few seconds, but it can take longer than that. Scope: Google's rendering queue for a page that returns a 200 status and is eligible for rendering. The source gives a variable duration, not a fixed timeout or service-level guarantee. Confidence: high · Verified: Google Search Central: rendering-queue duration Supports: A page may remain on the rendering queue for a few seconds or longer. As một lịch sử dữ liệu point, Google nhân viên (Martin Splitt và Tom Greenaway) khi put đó hình tại một median of về five seconds, với đó 90th percentile trong minutes — không đó “weeks” đó old fear implied. I cite đó hình trong my JavaScript SEO hướng dẫn, nhưng treat điều này as một dated conference dữ liệu point thay vì một hiện tại published chỉ số — Google hasn’t republished điều này as an ongoing number, và đó queue-timing quote trên là đó hiện tại chính thức cách diễn đạt.

Và có không render budget trong đó way mọi người imagine. Google không track một theo-trang “how expensive was this to render” (bản dịch) «cách expensive đã là này để render» score bạn cần để conserve. Kết xuất là cheap tại Google quy mô — optimize cho người dùng của bạn và performance, không một phantom render budget.

kết xuất options

“Where is the HTML built?” (bản dịch) «Nơi là đó HTML được xây dựng?» là đó câu hỏi đó decides của bạn SEO risk. Đó đầy đủ menu:

The useful distinction is where initial HTML is produced and what work remains for the browser. Nguồn: Rendering

Static generation produces HTML at build time. Server-side rendering produces it per request. Client-side rendering relies on browser JavaScript. Hydration attaches client behavior to server or static HTML. Dynamic rendering varies output by requester and is treated as a workaround.

© Patrick Stox LLC · CC BY 4.0 ·

  • Client-side kết xuất (CSR). Đó máy chủ gửi một near-empty shell; đó trình duyệt (hoặc WRS) chạy JavaScript để xây dựng mọi thứ. Này là “the most problematic one … full client-side rendering where all of the rendering happens in the browser.” (bản dịch) «đó hầu hết problematic một … đầy đủ client-side kết xuất nơi all of đó kết xuất happens trong đó trình duyệt.» Điều này có thể hoạt động, nhưng bạn là betting mọi thứ on đó render succeeding, và đây là đó slowest để nhận được lập chỉ mục.
  • Máy chủ-side kết xuất (SSR). Đó máy chủ xây dựng đó đầy đủ HTML cho mỗi yêu cầu. Nội dung là trong đó thô HTML, so đây là thấp-risk cho tìm kiếm.
  • Static site generation (SSG) / prerendering. HTML là được xây dựng khi tại deploy time. Lowest risk — nội dung là trong đó thô HTML đây là fast.
  • Hydration (isomorphic / universal). Bạn SSR hoặc SSG đó đầu tiên paint, thì JavaScript “hydrates” điều này trong đó trình duyệt để thêm interactivity. Này là điều gì hầu hết modern các framework làm, và đây là thấp-risk cho nội dung — chỉ watch cho hydration mismatches đó blank out hoặc replace nội dung.
  • Incremental Static Regeneration (ISR). Static các trang regenerated on một schedule hoặc on demand. Như SSG, với fresher nội dung — good cho lớn catalogs.
  • Edge kết xuất. SSR chạy tại CDN edge nodes — giống nhau thấp risk as SSR, với nhanh hơn time-để-đầu tiên-byte cho một global audience.
  • Streaming SSR. HTML streamed để đó trình duyệt trong chunks as đây là ready. Thấp-risk, nhưng hãy bảo đảm indexable nội dung không trapped chỉ trong một muộn hoặc deferred chunk.

My bottom line từ my JavaScript SEO hướng dẫn: “Any kind of SSR, static rendering, and prerendering setup is going to be fine for search engines. Gatsby, Next, Nuxt, etc., are all great.” (bản dịch) «Bất kỳ kind of SSR, static kết xuất, và prerendering setup là going để là fine cho các công cụ tìm kiếm. Gatsby, Tiếp theo, Nuxt, etc., là all great.» Đó framework matters ít hơn đó kết xuất chế độ bạn ship — đó giống nhau Tiếp theo.js app là safe hoặc risky depending on liệu bạn serve SSR/SSG hoặc đầy đủ CSR.

Dynamic kết xuất — workaround, không strategy

Dynamic kết xuất có nghĩa là detecting bots và serving them một prerendered, JavaScript-free version trong khi người dùng nhận đó client-side version. Google là hiện tại blunt về điều này: “Dynamic rendering was a workaround and not a long-term solution for problems with JavaScript-generated content in search engines,” (bản dịch) «Dynamic kết xuất đã là một workaround và không một dài-term giải pháp cho các vấn đề với JavaScript-generated nội dung trong các công cụ tìm kiếm,»“Dynamic rendering is a workaround and not a recommended solution, because it creates additional complexities and resource requirements.” (bản dịch) «Dynamic kết xuất là một workaround và không một được khuyến nghị giải pháp, vì điều này tạo ra thêm các phức tạp và yêu cầu về tài nguyên.» Evidence for this claim Google describes dynamic rendering as a workaround and does not recommend it as a long-term solution. Scope: Google Search guidance for JavaScript-generated content; server-side rendering, static rendering, or hydration are the recommended alternatives. Confidence: high · Verified: Google Search Central: Dynamic rendering as a workaround I agree, và I luôn có — để là honest I không bao giờ được khuyến nghị điều này, và I’m glad Google hiện tại khuyến nghị so với điều này cũng. đây là serving khác nhau nội dung để bots và người dùng, mà là awfully close để cloaking. Reach cho SSR, static, hoặc hydration thay vì.

Một wrinkle: Bing vẫn suggests dynamic kết xuất. Microsoft says “bingbot is generally able to render JavaScript” (bản dịch) «bingbot là generally able để render JavaScript» nhưng đó đang làm điều này tại quy mô là hard, so “we recommend dynamic rendering as a great alternative for websites relying heavily on JavaScript.” (bản dịch) «we khuyến nghị dynamic kết xuất as một great alternative cho websites relying heavily on JavaScript.» Đó practical takeaway: SSR/SSG giữ cả hai engines happy và sidesteps đó toàn bộ debate.

Điều này có nghĩ là gì cho của bạn nội dung

Kết xuất decides liệu Google bao giờ sees của bạn JavaScript nội dung — nhưng seeing nó là chỉ half job. sau khi trang là được kết xuất, practical concerns là thực <a href> links, trường-cụ thể parity giữa thô và được kết xuất HTML, robots-directive stage order, lazy nội dung, infinite scroll, và soft-404s. những điều đó all trực tiếp on JavaScript SEO trang, với kiểm thử workflow (URL Inspection được kết xuất HTML, screenshot, và console).

Đây là kết xuất stage của tìm kiếm pipeline. cho stages khoảng nó, see crawling (Cách các trang nhận fetched) và lập chỉ mục (Điều gì happens để được kết xuất trang tiếp theo), hoặc Cách Tìm kiếm Hoạt động hub cho toàn bộ journey.

Một audit rule là worth giữ ở đây: được kết xuất là một state, không một universal winner. Cho thân phản hồi nội dung và crawlable links, đó được kết xuất DOM cho thấy điều gì successful JavaScript đã thêm hoặc đã xóa. Cho các tiêu đề và các mô tả, điều này cho thấy additional inputs, trong khi Google có thể vẫn generate một tiêu đề link hoặc snippet từ other sources. Cho robots directives, một thô noindex có thể ngăn kết xuất, so JavaScript removal là asymmetric. Cho canonical, Google advises dùng một nguồn hoặc một JavaScript-set giá trị thay vì thay đổi an existing giá trị. Và JavaScript không thể thay đổi đó HTTP phản hồi status đã nhận. Giữ những các cột tách biệt trong evidence và dùng Google hiện tại JavaScript SEO hướng dẫn cho đó trường-cụ thể behavior.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.