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.
Ngôn ngữ
1 tín hiệu bằng chứng trên trang này
- Công cụ trực tuyến liên quanRaw vs. Rendered HTML Checker
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.
Tóm tắt — Kết xuất là step nơi công cụ tìm kiếm chạy của bạn trang code — including JavaScript — trong trình duyệt để xây dựng finished trang, so nó có thể see của bạn nội dung và links. Google làm điều này cho basically mỗi trang trong của nó Web Kết xuất Service, và nó thường hoạt động. Cách của bạn trang web produces của nó HTML (máy chủ, trình duyệt, hoặc tại xây dựng time) decides Cách safe bạn là.
Điều gì kết xuất là
Khi bạn open trang, của bạn trình duyệt downloads some HTML, sau đó chạy CSS và JavaScript để xây dựng trang bạn thực ra see. các công cụ tìm kiếm làm giống nhau điều. Kết xuất là step nơi công cụ tìm kiếm chạy của bạn trang code để xây dựng cuối version của trang, so nó có thể đọc nội dung và follow links way bạn có thể.
nó sits trong middle của Cách Google xử lý trang:
- Crawl — Google downloads thô HTML của bạn URL.
- Render — Google chạy trang JavaScript trong trình duyệt để xây dựng finished trang.
- chỉ mục — Google đọc đó finished trang và files nó away.
nếu của bạn nội dung chỉ hiển thị lên sau khi JavaScript chạy, Google có để render trang successfully trước khi nó có thể see nó. So kết xuất là bridge giữa fetching trang và understanding nó.
Google renders trong thực (nhưng unusual) trình duyệt
Google renderer là called đó Web Kết xuất Service (WRS). đây là một headless Chrome đó là “evergreen,” meaning điều này giữ lên với đó hiện tại version of Chrome và hỗ trợ modern web features. So đó old fear — “Google can’t run JavaScript” (bản dịch) «Google không thể chạy JavaScript» — không đúng. Điều này có thể. Evidence for this claim Google Search runs JavaScript with an evergreen version of Chromium. Scope: Google's Web Rendering Service; browser support does not guarantee that every application-specific interaction or resource will work. Confidence: high · Verified: Google Search Central: Fix Search-related JavaScript problems
nó chỉ unusual trình duyệt. nó không scroll hoặc nhấp, nó forgets mọi thứ giữa các trang (không staying logged trong), và nó caches files hard. những điều đó quirks là nơi phần lớn surprises come từ, và Nâng cao tab covers them.
big lựa chọn: nơi của bạn HTML nhận được xây dựng
single phần lớn quan trọng decision Đối với SEO là nơi của bạn trang HTML là produced:
- Trong trình duyệt (client-side kết xuất) — máy chủ gửi near-trang rỗng và JavaScript xây dựng mọi thứ. Riskiest Đối với tìm kiếm.
- On máy chủ (máy chủ-side kết xuất) — máy chủ gửi hoàn tất trang. Safe.
- Tại xây dựng time (static / prerendering) — các trang là được xây dựng sau khi, ahead của time. Safest và fastest.
phần lớn modern các framework mix những điều này. rule của thumb: nếu của bạn quan trọng nội dung là trong HTML trước khi bất kỳ JavaScript chạy (hoặc arrives gần như immediately), bạn’re trong good shape.
Muốn đó deeper version — cách đó Web Kết xuất Service thực ra behaves, liệu “two waves of indexing” (bản dịch) «hai waves of lập chỉ mục» là vẫn một điều, và một đầy đủ so sánh of mỗi kết xuất option? Chuyển để đó Advanced tab. Cho đó practical JavaScript các vấn đề và các cách sửa, see JavaScript SEO.
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.»
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» và “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:
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 và đâ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,» và “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.
AI summary
condensed take on Nâng cao version:
- Kết xuất = đó bridge từ crawling để lập chỉ mục. Google chạy 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. Three phases: crawl → render → chỉ mục.
- “Two waves of indexing” (bản dịch) «Hai waves of lập chỉ mục» là largely outdated (Splitt). Kết xuất happens cho essentially all các trang, thường fast. Google hiện tại tài liệu chẳng hạn một 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 đó» — không fixed delay là published. (MỘT ~5s median/minutes-90th-percentile hình tồn tại, nhưng đây là một dated conference dữ liệu point, không một hiện tại chỉ số.) Có không theo-trang render budget.
- Đó WRS là một weird trình duyệt: stateless (localStorage/cookies cleared giữa loads), declines permission prompts, không scroll/nhấp/hover, và caches JS/CSS aggressively (có thể bỏ qua bộ nhớ đệm các header) → fingerprint của bạn filenames.
- Kết xuất options, by SEO risk: SSG/prerender (lowest) ≈ SSR ≈ hydration ≈ ISR ≈ edge/streaming (thấp) ≪ đầy đủ CSR (highest). Patrick: “SSR, static rendering, and prerendering … are all great” (bản dịch) «SSR, static kết xuất, và prerendering … là all great»; đầy đủ CSR là “the most problematic one.” (bản dịch) «đó hầu hết problematic một.»
- Dynamic kết xuất là một workaround, Google advises so với điều này (close để cloaking). Bing vẫn khuyến nghị điều này — nhưng SSR/SSG satisfies cả hai.
- Đó framework không decide risk — đó kết xuất chế độ làm. Đó giống nhau app là safe hoặc risky depending on liệu bạn ship SSR/SSG hoặc đầy đủ CSR.
- Kết xuất là half đó job — đó practical JS các vấn đề (links, parity, lazy nội dung, infinite scroll, soft-404s, kiểm thử) là covered on đó JavaScript SEO trang.
Tài liệu chính thức
Chính-nguồn tài liệu từ các công cụ tìm kiếm.
- Understand JavaScript SEO basics — three phases (crawl → render → chỉ mục) và evergreen Chromium renderer.
- khắc phục Tìm kiếm-related JavaScript các vấn đề — WRS constraints: stateless storage/cookies, declined permissions, aggressive bộ nhớ đệm.
- Dynamic kết xuất as workaround — Vì sao dynamic kết xuất là workaround, không được khuyến nghị dài-term giải pháp.
- Trong-Depth Hướng dẫn để Cách Google Search Hoạt động — nơi kết xuất sits trong crawl → chỉ mục → phục vụ.
Bing / Microsoft
- bingbot Series: JavaScript, Dynamic Kết xuất, và Cloaking. Oh My! — Bing stance đó nó có thể render JS nhưng khuyến nghị dynamic kết xuất tại quy mô.
- new evergreen Bingbot — Bingbot kết xuất on Chromium-based Microsoft Edge.
Quotes từ nguồn
On—record statements từ Google và Bing (plus một vài từ my own writing). mỗi tìm kiếm-engine link là deep link đó jumps để quoted passage on nguồn trang.
Google — render pipeline
- “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.» Nhảy đến trích dẫn
- “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.» Nhảy đến trích dẫn
- “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…» Nhảy đến trích dẫn
- “The page may stay on this queue for a few seconds, but it can take longer than that.” (bản dịch) «Đó trang có thể stay on này queue cho vài seconds, nhưng điều này có thể take lâu hơn đó.» — đó hiện tại chính thức cách diễn đạt on render-queue timing; không fixed delay là published. Nhảy đến trích dẫn
Google — Web Kết xuất Service
- “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.» Nhảy đến trích dẫn
- “HTTP Cookies are cleared across page loads.” (bản dịch) «HTTP Cookies là cleared trên trang loads.» Nhảy đến trích dẫn
- “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.» Nhảy đến trích dẫn
- “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.» Nhảy đến trích dẫn
Google — dynamic kết xuất
- “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.» Nhảy đến trích dẫn
- “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.» Nhảy đến trích dẫn
Microsoft Bing
- “bingbot is generally able to render JavaScript…” (bản dịch) «bingbot là generally able để render JavaScript…» Nhảy đến trích dẫn
- “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.» Nhảy đến trích dẫn
Martin Splitt, Google (relayed qua Onely transcript của 2019 Quản trị viên web Central hangout)
- On hai-waves model: Splitt có đã nói nó plays ít hơn và ít hơn của role, đó nhiều các trang go qua render phase ngay cả không có JavaScript, và đó crawling, kết xuất, và lập chỉ mục là converging. đọc coverage
Patrick Stox (my own hoạt động — JavaScript SEO: Definitive 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.»
- “pages went to the renderer at a median time of five seconds” (bản dịch) «các trang went để đó renderer tại một median time of five seconds» (90th percentile trong minutes) — một dated conference-era dữ liệu point, không một hiện tại published chỉ số; see đó hiện tại chính thức queue-timing quote trên.
- “The most problematic one is going to be full client-side rendering where all of the rendering happens in the browser.” (bản dịch) «Đó hầu hết problematic một là going để là đầy đủ client-side kết xuất nơi all of đó kết xuất happens trong đó trình duyệt.»
- “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.»
mental models
1. Crawl → render → chỉ mục. Kết xuất là bridge. Crawling fetches thô HTML; kết xuất chạy JS để xây dựng DOM; lập chỉ mục đọc đó DOM. Khi JS nội dung goes bị thiếu, ask mà step thất bại — là nó fetched? được kết xuất? đã làm được kết xuất DOM contain nội dung?
2. renderer là thực trình duyệt với amnesia. Evergreen Chrome, nhưng stateless (forgets cookies/storage giữa các trang), không interaction (sẽ không scroll hoặc nhấp), và bộ nhớ đệm-happy (có thể chạy stale JS/CSS). Design as nếu mỗi visit là fresh, untouched, đầu tiên load.
3. Kết xuất chế độ decides của bạn risk, không của bạn framework. SSR, static, prerender, và hydration all put nội dung trong (hoặc quickly vào) DOM — thấp risk. đầy đủ CSR bets mọi thứ on render — highest risk. giống nhau tiếp theo.js app là safe hoặc risky depending on mà chế độ bạn ship.
4. “Hai waves” là old map. không plan khoảng deferred thứ hai wave của kết xuất days sau đó. Kết xuất happens cho essentially all các trang, thường trong seconds-để-minutes — và có không render budget để ration.
5. Dynamic kết xuất là smell, không strategy. Serving bots khác HTML hơn người dùng là workaround Google advises so với (và là close để cloaking). nếu bạn’re reaching cho nó, thực khắc phục là thường SSR/SSG.
6. Nhận nội dung vào DOM, sau đó verify. Pick chế độ đó diễn đạt nội dung trong được kết xuất DOM quickly, sau đó xác nhận với URL Inspection được kết xuất HTML. của bạn trình duyệt không phải Googlebot.
Kết xuất options — SEO trade-offs
| Option | nơi HTML là được xây dựng | SEO risk | Reach cho nó Khi |
|---|---|---|---|
| CSR (client-side) | trình duyệt/WRS chạy JS; máy chủ gửi shell | Highest — phụ thuộc vào render thành công; slowest để chỉ mục | App-như, gated, hoặc thấp-SEO-giá trị views |
| SSR (máy chủ-side) | máy chủ, theo yêu cầu | Thấp — nội dung trong thô HTML | Dynamic / personalized / fast-thay đổi nội dung |
| SSG / static / prerender | Tại deploy time | Lowest — trong thô HTML và fast | nội dung các trang, tài liệu, blogs, marketing |
| Hydration (isomorphic/universal) | SSR/SSG paint, sau đó JS hydrates | Thấp — watch hydration mismatches | phần lớn modern các framework |
| ISR (incremental static regen) | Static, regenerated on schedule/on-demand | Thấp — fresher SSG | Lớn catalogs needing periodic freshness |
| Edge kết xuất | SSR tại CDN edge | Thấp — nhanh hơn TTFB | Global, latency-sensitive SSR |
| Streaming SSR | HTML streamed trong chunks | Thấp — giữ indexable nội dung out của muộn chunks | Performance-cốt yếu SSR apps |
| Dynamic kết xuất | Bots nhận prerender, người dùng nhận CSR | Workaround chỉ — Google advises so với | cuối cùng resort cho legacy CSR |
Web Kết xuất Service — nhanh facts
| Behavior | Ý nghĩ cho bạn |
|---|---|
| Evergreen headless Chromium | Modern JS/CSS hoạt động; không cần để transpile cho old engine |
| Stateless (storage + cookies cleared) | không rely on persisted client state để phục vụ nội dung |
| Declines permission prompts | nội dung behind geolocation/notifications/camera sẽ không render |
| không scroll, nhấp, hoặc hover | Load nội dung on viewport, không on interaction |
| Caches JS/CSS aggressively | Fingerprint filenames (app.4f2a9c.js) so thay đổi là picked lên |
| Renders cho ~all các trang, thường trong seconds-để-minutes | Không “hai waves,” không render budget để ration |
Render-readiness audit checklist
truyền để xác nhận của bạn quan trọng nội dung thực ra survives kết xuất:
- Chính nội dung và main navigation links là present trong thô HTML phản hồi (view nguồn, không DevTools’ inspected DOM) — không injected chỉ sau khi JavaScript chạy.
- mỗi liên kết nội bộ reader cần để follow là thực
<a href="...">— không<div onclick>, hash-chỉ route (#/page), hoặc button đó pushes state client-side với không matching link. - Không cốt yếu JS hoặc CSS files là blocked trong
robots.txt( blocked bundle có thể leave WRS unable để xây dựng trang nó cần để render). - nội dung đó loads on scroll, hover, hoặc nhấp cũng có path đó renders không có bất kỳ interaction — WRS không scroll, nhấp, hoặc hover.
- Không có gì quan trọng phụ thuộc vào
localStorage,sessionStorage, hoặc cookies persisting giữa các yêu cầu — WRS là stateless và clears tất cả đó giữa trang loads. - Không có gì quan trọng sits behind geolocation, notification, hoặc camera permission prompt — WRS declines những điều đó theo mặc định.
- JS/CSS filenames là fingerprinted (
app.4f2a9c.js) so nội dung thay đổi forces fresh fetch thay vì getting phân phối từ WRS aggressive bộ nhớ đệm. - URL Inspection được kết xuất HTML/screenshot trong Google Search Console hiển thị giống nhau nội dung và links bạn see trong của bạn own trình duyệt.
- trang web không phải sử dụng dynamic kết xuất as của nó câu trả lời để CSR vấn đề — khắc phục là SSR, static kết xuất, hoặc hydration, không serving bots khác version của trang.
Kết xuất mistakes đó thực ra bite
Blocking JS hoặc CSS trang cần để render, trong robots.txt.
nếu WRS có thể’t fetch script hoặc stylesheet trang phụ thuộc vào, nó có thể’t
xây dựng chính xác được kết xuất DOM — bạn nhận hỏng hoặc rỗng render thay vì
trang bạn dự kiến. Làm thay vì: cho phép crawling của bạn JS/CSS assets;
robots.txt nên giữ bots out của thấp-giá trị spaces, không các tài nguyên của bạn
own các trang cần.
Shipping nội dung-cốt yếu các trang as đầy đủ client-side kết xuất (CSR) với không fallback. CSR 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 bets của bạn entire trang on đó render succeeding, và đây là đó slowest option để nhận được lập chỉ mục. Làm thay vì: reach cho SSR, static generation/prerendering, hoặc hydration so nội dung là trong (hoặc very quickly vào) đó thô HTML.
Relying on hash-based routes (#/product/123) as của bạn chỉ navigation.
WRS follows thực <a href> links; hash fragment đó chỉ thay đổi
client-side state, với không máy chủ-được kết xuất tương đương URL, cho renderer
không có gì để crawl onward để. Làm thay vì: sử dụng thực paths máy chủ có thể respond
để trực tiếp (/product/123), ngay cả trong client-nặng app.
Lazy-loading nội dung với không non-interactive path để điều này. Vì đó WRS “doesn’t scroll, click, or hover,” (bản dịch) «không scroll, nhấp, hoặc hover,» nội dung đó chỉ xuất hiện sau một of những events là invisible để điều này theo mặc định. Làm thay vì: load trên-đó-fold và reasonably-near-viewport nội dung không có requiring an interaction, và reserve đúng lazy-loading cho nội dung genuinely dưới đó fold với một proper non-JS fallback.
Treating dynamic kết xuất as một dài-term cách sửa thay vì một workaround. Google là rõ ràng đó “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 additional complexities và tài nguyên requirements» — và serving bots khác nhau nội dung hơn người dùng sits uncomfortably close để cloaking. Làm thay vì: cách sửa đó kết xuất chế độ itself (SSR/static/hydration) thay vì building một bot-detection layer khoảng một CSR vấn đề.
Validation các kiểm thử
Truyền/fail kiểm tra để xác nhận kết xuất khắc phục thực ra took effect — chạy những điều này sau khi bạn ship thay đổi, không as ongoing health chỉ số.
Kiểm thử: nội dung hiện tại xuất hiện trong được kết xuất DOM
- Kiểm thử để chạy — Submit đó URL để Google Search Console’s URL Inspection tool và dùng “Test Live URL,” (bản dịch) «Kiểm thử Trực tiếp URL,» thì open đó được kết xuất HTML tab (hoặc chạy đó trang qua đó Render Khoảng trống tool để diff thô so với. được kết xuất HTML trực tiếp).
- Dự kiến kết quả — Đó nội dung bạn đã thêm hoặc fixed xuất hiện trong đó được kết xuất HTML/DOM view, không chỉ trong của bạn own trình duyệt dev tools.
- Failure interpretation — Nếu đây là vẫn bị thiếu từ đó được kết xuất HTML nhưng present khi bạn view đó trang thông thường, đó WRS vẫn không thể xây dựng điều này — kiểm tra cho một blocked JS/CSS tài nguyên, an interaction-chỉ load, hoặc một client-storage dependency trước assuming đó cách sửa worked.
- Monitoring window — Immediate; URL Inspection trực tiếp kiểm thử reflects đó hiện tại state of đó URL right away.
- Rollback trigger — Đó được kết xuất HTML vẫn không contain đó nội dung sau đó cách sửa, hoặc đó trực tiếp kiểm thử throws một new crawl/render lỗi điều này đã không throw trước.
Kiểm thử: quan trọng links survive render
- Kiểm thử để chạy — kiểm tra được kết xuất HTML (URL Inspection hoặc Render Khoảng trống)
cho thực
<a href>tags khoảng mỗi link reader cần để follow, không chỉ visible clickable elements. - Dự kiến kết quả — mỗi link trong được kết xuất DOM có resolvable
hrefpointing tại thực, crawlable URL. - thất bại interpretation — bị thiếu hoặc rỗng
hrefon Điều gì looks như hoạt động link thường có nghĩ là nó<div>/<button>với client-side nhấp handler và không máy chủ-renderable path — WRS có thể’t follow nó. - Monitoring window — Immediate.
- Rollback trigger — Links đó mattered trước khi thay đổi là bị thiếu
hrefcác thuộc tính hoặc point tại hash-chỉ fragment trong được kết xuất output.
Kiểm thử: khắc phục không âm thầm regress on tiếp theo deploy
- Kiểm thử để chạy — Re-chạy được kết xuất-HTML kiểm tra (URL Inspection trực tiếp kiểm thử hoặc Render Khoảng trống) sau khi của bạn tiếp theo deploy đó touches điều này trang templates hoặc xây dựng pipeline.
- Dự kiến kết quả — giống nhau nội dung và links là vẫn present trong được kết xuất DOM as Khi bạn đầu tiên confirmed khắc phục.
- thất bại interpretation — nếu nội dung đó là present disappears again, sau đó thay đổi có khả năng reintroduced client-chỉ dependency hoặc broke máy chủ-được kết xuất path.
- Monitoring window — Re-kiểm tra sau khi mỗi deploy đó touches affected templates; không một-time kiểm tra.
- Rollback trigger — nội dung hoặc links đó là confirmed present drop out của được kết xuất DOM again.
các tài nguyên worth của bạn time
My related writing
- JavaScript SEO: Definitive Hướng dẫn — my đầy đủ hướng dẫn để kết xuất, kết xuất modes, DOM parity, infinite scroll, và hai-các trang-as-một vấn đề.
- Người mới bắt đầu Hướng dẫn để kỹ thuật SEO — nơi kết xuất fits giữa crawling và lập chỉ mục.
My speaking
- Cách Tìm kiếm Hoạt động (SlideShare) — my walkthrough of crawling, kết xuất (đó WRS, stateless loads, không interaction), lập chỉ mục, và xếp hạng. (My standing disclaimer áp dụng: “This is my understanding of systems… not going to be 100% complete or accurate.” (bản dịch) «Này là my understanding of các hệ thống… không going để là 100% hoàn tất hoặc chính xác.»)
từ others
- web.dev — Kết xuất on Web — canonical explainer của CSR / SSR / SSG / hydration trade-offs từ Chrome team.
- Onely — Google Hai Waves của lập chỉ mục — transcript-based coverage của Martin Splitt office-hours session explaining Vì sao hai-waves model là fading; cited trong bài viết thân phản hồi.
- công cụ tìm kiếm Roundtable — Google: Không Theo-trang Tìm kiếm Cost — Google rep clarifying có không theo-trang crawl/render/chỉ mục cost để ration.
- công cụ tìm kiếm Journal — JavaScript SEO — ngành coverage của JS SEO thực hành tốt nhất, kiểm thử workflows, và framework considerations.
- Vercel — Kết xuất Strategies — tiếp theo.js/edge kết xuất tài liệu; hữu ích Khi chọn giữa CSR, SSR, SSG, ISR, và streaming SSR cho thực project.
- r/TechSEO — community cho gỡ lỗi render/chỉ mục các vấn đề.
Videos
- Google Search Central (YouTube) — Martin Splitt JavaScript SEO series và kết xuất explainers là best chính thức video walkthroughs của Cách Web Kết xuất Service xử lý của bạn JS. Channel
Số liệu worth citing
- Hiện tại chính thức cách diễn đạt: không fixed delay. Google 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 cho đó render queue.
- Lịch sử dữ liệu point (dated) — ~5 second median render delay. Trong trước đó conference remarks, Google nhân viên (Martin Splitt và Tom Greenaway) put các trang reaching đó renderer tại một median of ~5 seconds, với đó 90th percentile trong minutes — không đó “weeks” đó old hai-waves fear implied. I cite này trong my JavaScript SEO hướng dẫn, nhưng treat điều này as một lịch sử dữ liệu point, không một hiện tại published chỉ số — Google hasn’t republished điều này as an ongoing hình.
- Hai waves of lập chỉ mục là fading. Theo Martin Splitt, đó hai-waves model plays ít hơn và ít hơn of một role as crawling, kết xuất, và lập chỉ mục converge — kết xuất hiện tại happens cho essentially all các trang. Coverage
- Không theo-trang render budget. Google có indicated điều này không track cách expensive an riêng lẻ trang là để crawl, render, chỉ mục, hoặc serve — so có không “render budget” (bản dịch) «render budget» để conserve đó way ngân sách crawl nhận discussed. Coverage
Tự kiểm tra: Kết xuất
Five nhanh các câu hỏi on Cách Google renders các trang. Pick câu trả lời cho mỗi, sau đó kiểm tra.
Nhật ký thay đổi
Đã cập nhật 8 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 28 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 18 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 17 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.