Hướng dẫn về SolidJS SEO
Cách làm SolidJS các trang crawlable, indexable, và fast — vì sao bare SolidJS là CSR-chỉ, cách SolidStart SSR/SSG các cách sửa điều này, managing head tags với @solidjs/meta, và vì sao SolidJS hydrates (điều này không phải resumable như Qwik).
Ngôn ngữ
SolidJS là một fast, React-như library với fine-grained reactivity và không virtual DOM — nhưng on của nó own đây là client-side được kết xuất, so điều này ships an empty HTML shell với đó giống nhau lập chỉ mục các vấn đề as bare React. Đó cách sửa là SolidStart, đó chính thức meta-framework: SSR hoặc SSG put real nội dung và metadata trong đó đầu tiên phản hồi. Manage head tags với @solidjs/meta (<Title>, <Meta>, <Link>), trả về real 404s với <HttpStatusCode>, và fetch dữ liệu on đó máy chủ với createAsync. Một điều không để mix lên: SolidJS hydrates — điều này không phải resumable. Resumability là Qwik trick. SolidJS win là một Core Web Vitals edge on top of tiêu chuẩn SSR.
Evidence for this claim The article's described solidjs-seo capabilities must be evaluated against the platform's current documentation rather than assumed to be search-engine behavior. Scope: Platform-specific capability documentation. Confidence: high · Verified: SolidStart documentation Evidence for this claim Regardless of platform, Google needs crawlable URLs, accessible rendered content, descriptive metadata, and valid search directives. Scope: Google requirements independent of platform. Confidence: high · Verified: Google Search Central: SEO Starter GuideTóm tắt — SolidJS là fast, React-như library, nhưng on của nó own nó xây dựng trang trong của bạn trình duyệt — so các công cụ tìm kiếm đầu tiên see rỗng shell. khắc phục là SolidStart, của nó chính thức đầy đủ-stack tool, mà gửi finished HTML để cả hai người dùng và các crawler. Kết xuất chế độ là theo-route setting, không toàn bộ-trang web chuyển — sử dụng máy chủ kết xuất (SSR hoặc SSG) on routes đó cần để xếp hạng, đặt của bạn tiêu đề và meta tags với @solidjs/meta, và verify mỗi route thực tế HTML output thay vì assuming toàn bộ trang web là covered.
Điều gì SolidJS là
SolidJS là JavaScript library cho building người dùng interfaces. nếu bạn’ve seen React, nó’ll look familiar — nó dùng giống nhau JSX syntax và similar component style. big khác biệt dưới hood là đó SolidJS có không virtual DOM: nó cập nhật chính xác pieces của trang đó thay đổi, mà làm nó rất fast.
catch Đối với SEO: theo mặc định, SolidJS là client-side được kết xuất (CSR). máy chủ gửi gần như-rỗng HTML file, sau đó của bạn trình duyệt downloads JavaScript và xây dựng trang. đó vấn đề vì đầu tiên điều tìm kiếm engine sees là rỗng version — không text, không tiêu đề, không mô tả meta.
Vì sao CSR là SEO vấn đề
Khi Google crawl CSR trang, nó sees rỗng shell đầu tiên. nó có thể come lại sau đó, chạy JavaScript, và đọc nội dung thực — nhưng đó thứ hai truyền có thể take anywhere từ hours để weeks. Tệ hơn, Bing và social-media các crawler (Facebook, LinkedIn, X) thường không chạy JavaScript tại all, so họ có thể không bao giờ see của bạn nội dung hoặc của bạn share previews.
Đây là giống nhau vấn đề bare React, Vue, và Angular có. nó không unique để SolidJS — nó thuộc tính của client-side kết xuất. (See JavaScript SEO cho đầy đủ picture.)
khắc phục: SolidStart
SolidStart là chính thức meta-framework cho SolidJS — think của nó as SolidJS version của tiếp theo.js (cho React) hoặc Nuxt (cho Vue). nó lets máy chủ gửi finished HTML, so các công cụ tìm kiếm và social các crawler nhận của bạn nội dung on rất đầu tiên yêu cầu. Hai main modes:
- SSR (máy chủ-side kết xuất) — trang là được xây dựng on máy chủ mỗi time nó requested. Good cho nội dung đó thay đổi thường.
- SSG (static trang web generation) — các trang là được xây dựng sau khi tại deploy time và phân phối as đơn giản files. Fastest option; ideal cho blogs, tài liệu, và marketing các trang.
Setting của bạn tiêu đề và meta tags
để control của bạn <title>, mô tả meta, và social share tags, sử dụng
@solidjs/meta package. nó cho bạn <Title>, <Meta>, và <Link>
components bạn drop vào của bạn các trang — SolidJS tương đương của React Helmet. với
SolidStart SSR turned on, những điều đó tags hiển thị lên trong HTML đó các crawler đọc.
một điều không để mix lên
Bạn có thể hear SolidJS lumped trong với Qwik as “the resumable frameworks.” (bản dịch) «đó resumable các framework.» đó là sai. Resumability là Qwik ý tưởng. SolidJS dùng ordinary hydration — điều này chỉ làm điều này hơn cheaply hơn React. Cho SEO đó phân biệt barely matters (cả hai put nội dung trong đó HTML), nhưng đây là một lỗi thường gặp.
Muốn thực mechanics — SSR so với. SSG so với. streaming, @solidjs/meta API, thực 404s, máy chủ-side dữ liệu fetching, và Core Web Vitals story? Chuyển để Nâng cao tab.
Evidence for this claim The article's described solidjs-seo capabilities must be evaluated against the platform's current documentation rather than assumed to be search-engine behavior. Scope: Platform-specific capability documentation. Confidence: high · Verified: SolidStart documentation Evidence for this claim Regardless of platform, Google needs crawlable URLs, accessible rendered content, descriptive metadata, and valid search directives. Scope: Google requirements independent of platform. Confidence: high · Verified: Google Search Central: SEO Starter GuideTóm tắt — SolidJS là fine-grained reactive (các tín hiệu, không virtual DOM) và ships as CSR library theo mặc định — rỗng shell với giống nhau Wave-1 lập chỉ mục vấn đề as bare React. SolidStart là khắc phục: SSR, SSG (route prerendering), và streaming SSR put nội dung và metadata trong đầu tiên phản hồi. Manage head tags với @solidjs/meta (
<Title>,<Meta>,<Link>dưới<MetaProvider>), trả về thực các mã trạng thái với<HttpStatusCode>, và load dữ liệu on máy chủ vớicreateAsyncso nó lands trong SSR HTML. độ chính xác spine: SolidJS hydrates — nó không phải resumable (đó Qwik). Của nó fine-grained reactivity là client cập nhật optimization, không máy chủ-để-client startup một — so SEO upside là mostly Core Web Vitals (INP/TBT) edge layered bên cạnh thông thường SSR.
SolidJS architecture: Điều gì thực ra khác
SolidJS dùng JSX đó looks giống hệt để React, plus hooks-như primitives
(createSignal, createEffect, createMemo). nhưng execution model là
fundamentally khác:
- React re-chạy toàn bộ component function Khi state thay đổi và diffs virtual DOM để quyết định Điều gì để cập nhật.
- SolidJS compiles JSX để thực DOM operations tại xây dựng time. Components chạy sau khi; reactive các tín hiệu wire các giá trị trực tiếp để cụ thể DOM nodes đó phụ thuộc on them. Khi tín hiệu thay đổi, Solid cập nhật chỉ đó node — không reconciliation, không virtual DOM overhead.
Đây là Vì sao SolidJS consistently sits near top của js-framework-benchmark suite, và Vì sao của nó runtime là dramatically leaner hơn React re-render model. library itself là khoảng 7KB gzipped. Nhỏ hơn, surgical cập nhật plus tiny runtime là performance story — nhưng none của đó thay đổi kết xuất chế độ, mà là Điều gì decides của bạn SEO fate.
CSR theo mặc định: SEO vấn đề
Xây dựng với SolidJS alone (không SolidStart) và bạn nhận client-side-được kết xuất app:
- máy chủ gửi
index.htmlvới near-thân rỗng — typically<div id="root"></div>và script tag. - trình duyệt downloads JS bundle, chạy Solid reactive code, và populates DOM.
- Googlebot’s đầu tiên wave sees rỗng shell — Không có nội dung, không metadata.
- Googlebot’s thứ hai wave ( kết xuất queue) eventually chạy JS và sees nội dung — nhưng timing là unpredictable, từ hours để weeks.
- Bing, social các crawler, và non-JS bots có thể không bao giờ see nội dung tại all.
Đây là hai-wave kết xuất xử lý, và nó giống nhau trap bất kỳ CSR SPA falls vào. practical impacts: chậm ban đầu lập chỉ mục của new nội dung; các tiêu đề và meta các mô tả bị thiếu từ thô HTML (so sai/blank snippets trong SERPs); và soft 404s, vì CSR app có thể’t trả về đúng HTTP 404 — máy chủ luôn các câu trả lời 200 với app shell.
SolidStart: khắc phục
SolidStart (1,0, ổn định) là chính thức SolidJS meta-framework, được xây dựng on Vinxi (Vite + Nitro). nó cung cấp:
- Isomorphic, file-based routing — files dưới
src/routes/map để URLs (src/routes/blog/[slug].tsx→/blog/:slug). Một correction worth đang precise về: SolidStart itself không ship một router hoặc metadata library bundled trong — theo của nó own tài liệu, “SolidStart itself does not ship with a Router or Metadata library. Rather, it leaves that open for you to use any library you want.” (bản dịch) «SolidStart itself không ship với một Router hoặc Metadata library. Rather, điều này leaves đó open cho bạn để dùng bất kỳ library bạn muốn.» Đó routing và@solidjs/metabehavior described ở đây come từ thêm@solidjs/routervà@solidjs/metaexplicitly (đó chính thức templates thêm cả hai cho bạn, mà là vì sao điều này có thể feel tự động — kiểm tra của bạnpackage.jsonthay vì assuming they nghĩ ra free với đó framework). - Multiple kết xuất modes, chosen theo route: CSR, SSR (synchronous, asynchronous, hoặc streaming), và SSG / route prerendering. MỘT SolidStart project không “SSR” hoặc “CSR” as một toàn bộ — mỗi route picks của nó own chế độ, so verify đó kết xuất config (và đó resulting HTML) cho đó cụ thể route bạn care về thay vì assuming đó toàn bộ site inherited một setting.
- Máy chủ functions — một
"use server"directive cho RPC-style máy chủ code (dữ liệu fetching, database access). - Adapters cho Cloudflare, Vercel, Netlify, Deno, Node, và static hosting.
Version note: điều này reflects SolidStart 1,0’s hiện tại tài liệu, mà labels itself beta và là cuối cùng đã cập nhật 2026-04-28 — xác nhận details so với tài liệu cho version bạn’re thực ra đang chạy trước khi treating bất kỳ của điều này as vĩnh viễn API surface.
SSR so với. SSG so với. streaming — SEO đọc
- SSR (synchronous, asynchronous, hoặc streaming — SolidStart names những điều này as distinct sub-modes) delivers đầy đủ nội dung on đầu tiên yêu cầu và là fully indexable on Wave 1. Best cho frequently thay đổi các trang.
- SSG (route prerendering) xây dựng HTML tại deploy time — fastest TTFB và
LCP, CDN-có thể lưu vào bộ nhớ đệm, không theo-yêu cầu máy chủ hoạt động. Best cho blogs, tài liệu, và
marketing các trang. Configure prerendered routes trong
app.config.ts:
// app.config.ts
import { defineConfig } from "@solidjs/start/config";
export default defineConfig({
server: {
prerender: {
routes: ["/", "/about", "/blog"],
},
},
});- Streaming SSR gửi HTML progressively để improve TTFB on dữ liệu-nặng các trang; Google renders đầy đủ streamed output.
- CSR là fine cho authenticated dashboards và tools đó không cần để xếp hạng — không cho công khai nội dung.
Managing head tags với @solidjs/meta
@solidjs/meta package là SolidJS tương đương của React Helmet hoặc
tiếp theo.js <Head>. nó SSR-ready và asynchronous. Wrap của bạn app trong
<MetaProvider> so tags là collected during SSR, sau đó đặt theo-trang tags bên trong
của bạn route components:
// src/routes/about.tsx
import { Title, Meta, Link } from "@solidjs/meta";
export default function AboutPage() {
return (
<>
<Title>About Us — My Site</Title>
<Meta name="description" content="Learn more about us." />
<Link rel="canonical" href="https://example.com/about" />
<Meta property="og:title" content="About Us" />
<Meta property="og:description" content="Learn more about us." />
<Meta property="og:image" content="https://example.com/og-about.jpg" />
<main>...</main>
</>
);
}components khả dụng là <Title>, <Meta>, <Link>, <Style>,
<Base>, và <MetaProvider> wrapper. Deduplication là được xây dựng trong:
<Meta> tags với matching name các thuộc tính override parent definitions —
deepest (phần lớn cụ thể) một wins, và điều này hoạt động correctly during SSR. So root
default tiêu đề và theo-trang overrides behave as bạn’d expect.
Một warning straight từ tài liệu: không thêm thô <title> tags trong của bạn
máy chủ files — họ override @solidjs/meta functionality. luôn sử dụng
<Title> component, không bao giờ hand-được viết HTML tiêu đề trong của bạn máy chủ template.
Dữ liệu có cấu trúc (JSON-LD)
Google hỗ trợ JSON-LD liệu nó trong thô HTML hoặc injected by JavaScript, nhưng SSR-được kết xuất JSON-LD là reliable lựa chọn. Trong SolidStart, render nó trong route component:
export default function ArticlePage() {
const schema = {
"@context": "https://schema.org",
"@type": "Article",
"headline": "My Article",
"author": { "@type": "Person", "name": "Author Name" },
};
return (
<>
<script
type="application/ld+json"
innerHTML={JSON.stringify(schema)}
/>
<article>...</article>
</>
);
}với SSR enabled, JSON-LD xuất hiện trong máy chủ-được kết xuất HTML — được ưu tiên approach cho reliability trên mỗi crawler. Validate với Rich Kết quả Kiểm thử hoặc URL Inspection Tool.
Hydration, không resumability — độ chính xác spine
Hydration là xử lý nơi, sau khi SSR delivers được kết xuất HTML,
framework attaches để existing DOM để làm nó interactive: download JS
bundle, execute framework code, reconcile state với existing nodes,
attach event listeners. SolidJS dùng hydration — giống nhau fundamental mechanism
as React hydrate, Vue createSSRApp, hoặc Angular SSR.
Resumability (Qwik architecture) là khác: máy chủ serializes framework execution state vào HTML, và client resumes từ ở đó không có re-executing components — interactive trước khi bất kỳ JS chạy.
myth để debunk: SolidJS fine-grained reactivity là đôi khi confused với resumability vì cả hai tránh “re-đang chạy” components trong truyền thống hợp lý. họ không phải giống nhau điều. Fine-grained reactivity là client-side cập nhật optimization; resumability là máy chủ-để-client startup mechanism. SolidJS vẫn downloads và chạy của nó runtime trước khi trang là interactive.
SEO implication: cả hai SSR+hydration (SolidJS) và resumability (Qwik) put được kết xuất HTML trong máy chủ phản hồi, so cả hai là good cho lập chỉ mục. khác biệt là Time để Interactive và INP on chậm devices, nơi Qwik near-zero startup JS có edge. cho crawl và chỉ mục, SolidStart SSR là đã đủ.
Core Web Vitals
SolidJS runtime advantages có thể translate vào tốt hơn Cốt lõi Web Chỉ số quan trọng scores on routes đó dùng SSR — nhưng này không tự động hoặc universal. Không chính nguồn establishes guaranteed cheap hydration hoặc tốt hơn outcomes cho mỗi Solid/SolidStart route: bundle size, dữ liệu fetching, bên thứ ba scripts, device, và đó route thực tế kết xuất chế độ all determine đó real cost. Treat đó sau as đó mechanism by mà SolidJS có thể help, và đo lường của bạn own routes để xác nhận điều này làm:
- LCP improves vì largest nội dung element là trong máy chủ-được kết xuất HTML — không đang chờ on JS.
- INP improves vì Solid fine-grained runtime xử lý interactions efficiently (không virtual DOM diffing).
- CLS drops vì SSR’d nội dung không shift as muộn-loading JS fills trong.
MỘT caution worth giữ honest: figures như “SolidJS is ~70% faster than React’s virtual DOM” (bản dịch) «SolidJS là ~70% nhanh hơn React virtual DOM» come từ synthetic benchmarks (js-framework-benchmark), không thực tế trường dữ liệu. Real CWV phụ thuộc far hơn on implementation quality, dữ liệu fetching, và hosting hơn on framework lựa chọn. Treat đó benchmark numbers as directional, và đo lường của bạn own trường dữ liệu trong CrUX / Search Console.
Routing, dữ liệu fetching, và thực 404s
Routing. SolidStart dùng History API theo mặc định — không bao giờ sử dụng
hash-based (#/page) routing, mà ngăn reliable phát hiện URL. giữ
trailing-slash behavior consistent và enforce nó với máy chủ các chuyển hướng, không
chỉ canonicals.
Dữ liệu fetching Đối với SEO. nội dung đó cần để xếp hạng phải là loaded on
máy chủ so nó trong SSR HTML. sử dụng createAsync và máy chủ functions — không
onMount hoặc client-side effects, mà chạy sau khi HTML là được gửi:
// Server-side data fetch — content lands in the initial HTML ✓
import { createAsync } from "@solidjs/router";
import { getPost } from "~/lib/api";
export const route = {
load: ({ params }) => getPost(params.slug),
};
export default function BlogPost(props) {
const post = createAsync(() => getPost(props.params.slug));
return <article>{post()?.content}</article>;
}thực 404s. catch-all route plus <HttpStatusCode> từ @solidjs/start
sets thực tế HTTP phản hồi code on máy chủ — đúng 404 thay vì soft
404:
// src/routes/[...404].tsx
import { HttpStatusCode } from "@solidjs/start";
export default function NotFound() {
return (
<>
<HttpStatusCode code={404} />
<h1>Page Not Found</h1>
</>
);
}Sitemaps, robots.txt, và SEO quốc tế
- robots.txt — thêm
public/robots.txttại project root và point nó tại của bạn sitemap. không block/api/routes được sử dụng cho XHR dữ liệu fetching. - Sitemap — thứ ba-party
solid-start-sitemapplugin (by madaxen86) generatessitemap.xmltại xây dựng time và hỗ trợ dynamic routes qua parameter mapping hoặc runtime API route. - SEO quốc tế — emit hreflang với
<Link rel="alternate" hreflang="…">từ @solidjs/meta, và sử dụng subdirectory structure (/en/,/fr/) over subdomains hoặc query parameters.
phổ biến SolidJS SEO pitfalls
- Đang chạy SolidJS CSR không có SolidStart SSR/SSG.
- Fetching rankable nội dung trong
onMount/ client-side effects. - Forgetting đó
<MetaProvider>wrapper (tags sẽ không render trong SSR). - Thêm thô
<title>HTML tags trong máy chủ templates (overrides @solidjs/meta). - Dùng hash-based routing.
- Serving soft 404s không có
<HttpStatusCode>. - Blocking API routes trong robots.txt.
- Không fingerprinting JS assets (Google caches scripts aggressively).
- Nội dung behind một nhấp/accordion/tab đó không bao giờ auto-loads vào đó DOM.
- Assuming SSR hoạt động không có verifying qua View Nguồn / URL Inspection.
- Assuming
@solidjs/routervà@solidjs/metacome bundled với SolidStart — they không; SolidStart own tài liệu chẳng hạn điều này “does not ship with a Router or Metadata library.” (bản dịch) «không ship với một Router hoặc Metadata library.» Chính thức templates thêm cả hai cho bạn, nhưng một từ-scratch hoặc customized setup cần them installed explicitly. - Treating một project as uniformly “SSR” hoặc “CSR” — kết xuất chế độ là set theo route trong SolidStart, so một route bạn assume là máy chủ-được kết xuất có thể không là.
nơi điều này sits
SolidJS lives trong JavaScript các framework subcluster alongside Qwik, dưới rộng hơn JavaScript SEO cluster. cho closest parallel, see React SEO — SolidJS chia sẻ React JSX và CSR-by-default vấn đề, nhưng các cách sửa nó với SolidStart thay vì tiếp theo.js, và chạy nhanh hơn thanks để không virtual DOM. cho Cách Google sees được kết xuất nội dung, see kết xuất và crawling.
AI summary
condensed take on Nâng cao version:
- SolidJS = fine-grained reactivity, không virtual DOM. Components chạy sau khi; các tín hiệu cập nhật chỉ chính xác DOM nodes đó thay đổi. Tiny runtime (~7KB), consistently near top của js-framework-benchmark, nhanh hơn React re-render model.
- Bare SolidJS là CSR theo mặc định — rỗng HTML shell. giống nhau Wave-1 lập chỉ mục vấn đề as bare React/Vue/Angular: Googlebot’s đầu tiên wave sees Không có nội dung, kết xuất là queued (hours để weeks), và Bing/social các crawler có thể không bao giờ see nó. Soft-404 risk cũng (CSR có thể’t trả về thực 404).
- SolidStart là khắc phục, theo route — chính thức meta-framework offers CSR, SSR (sync, async, hoặc streaming), và SSG theo route; nó không default toàn bộ project để SSR. SSR/SSG routes put nội dung + metadata trong đầu tiên phản hồi, fully indexable on Wave 1 — verify cụ thể route thay vì assuming trang web-wide coverage.
- Router và metadata không phải auto-bundled. SolidStart own tài liệu chẳng hạn nó
ships không có router hoặc metadata library —
@solidjs/routervà@solidjs/metalà rõ ràng additions chính thức templates happen để bao gồm. - Head tags qua @solidjs/meta:
<Title>,<Meta>,<Link>dưới<MetaProvider>; deduplication hoạt động trong SSR; không bao giờ sử dụng thô<title>trong máy chủ files. - thực 404s với
<HttpStatusCode>; máy chủ-side dữ liệu vớicreateAsync(khôngonMount); History API routing (không hash routes); JSON-LD được kết xuất trong route component. - Độ chính xác spine: SolidJS hydrates — nó không phải resumable. Resumability là Qwik. Fine-grained reactivity là client-cập nhật optimization, không startup một. Cả hai SSR+hydration và resumability là good cho lập chỉ mục; Qwik chỉ wins on Time để Interactive.
- CWV upside là có thể, không guaranteed (on SSR’d routes): tốt hơn LCP, INP, và CLS là plausible outcomes — nhưng benchmark gaps là synthetic, và thực trường dữ liệu phụ thuộc vào implementation, dữ liệu, và hosting, không framework lựa chọn alone.
Tài liệu chính thức
Chính-nguồn tài liệu từ Google và SolidJS team.
Google — JavaScript SEO
- Understand JavaScript SEO Basics — crawl → render → chỉ mục pipeline và hai-wave xử lý.
- Dynamic Kết xuất as Workaround — Vì sao Google deprecated dynamic kết xuất trong favor của SSR, static kết xuất, và hydration.
- SEO Hướng dẫn cho Web Nhà phát triển — nhà phát triển-facing fundamentals.
SolidJS / SolidStart
- SolidJS tài liệu — tài liệu chính thức home.
- Fine-Grained Reactivity — các tín hiệu model và Cách cập nhật đích riêng lẻ DOM nodes.
- SolidStart — meta-framework: SSR, streaming, routing, máy chủ functions.
- SolidStart — Head và Metadata — managing tiêu đề/meta/link tags Đối với SEO.
- SolidStart — Route Pre-kết xuất — configuring SSG.
@solidjs/meta
- solid-meta GitHub repository — nguồn và API reference.
- @solidjs/meta on npm — package.
- Tiêu đề component tài liệu và Meta component tài liệu.
Quotes từ nguồn
On—record statements từ Google on JavaScript SEO, plus SolidJS team own cách diễn đạt.
Google — Cách JavaScript apps là processed
- “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.» — Google Search Central. Understand JavaScript SEO Basics
- “It’s fine to use JavaScript to inject links into the DOM, as long as such links follow the best practices for crawlable links.” (bản dịch) «đây là fine để dùng JavaScript để inject links vào đó DOM, miễn là such links follow đó thực hành tốt nhất cho crawlable links.»
— Google Search Central (dùng
<a href>, khôngonclickhoặcjavascript:void(0)). Understand JavaScript SEO Basics - “You shouldn’t use JavaScript to change the canonical URL to something else than the URL you specified as the canonical URL in the original HTML.” (bản dịch) «Bạn không nên dùng JavaScript để thay đổi đó canonical URL để điều gì đó khác hơn đó URL bạn specified as đó canonical URL trong đó original HTML.» — Google Search Central. Understand JavaScript SEO Basics
- “Use the History API to implement routing between different views of your web app.” (bản dịch) «Dùng đó History API để implement routing giữa khác nhau views of của bạn web app.» — Google Search Central (i.e. không fragment/hash routing). Understand JavaScript SEO Basics
SolidJS team — fine-grained reactivity (paraphrased cách diễn đạt)
- SolidStart head-và-metadata tài liệu warn: “Be sure to avoid adding any normal
<title />tags in any server files, as they would override the functionality of @solidjs/meta.” (bản dịch) «Là sure để tránh thêm bất kỳ thông thường tags trong bất kỳ máy chủ files, as they sẽ override đó functionality of @solidjs/meta.» SolidStart — Head và Metadata
SolidJS SEO checklist
truyền để xác nhận SolidJS trang web là crawlable, indexable, và fast:
- bạn’re sử dụng SolidStart với SSR hoặc SSG — không bare SolidJS trong CSR chế độ.
- View Nguồn hiển thị nội dung thực và
<a href>links trong thô HTML — không chỉ<div id="root"></div>. - App là wrapped trong
<MetaProvider>so head tags render during SSR. -
<Title>và<Meta name="description">đặt theo route qua @solidjs/meta. - Không thô
<title>tags trong máy chủ files (họ override @solidjs/meta). - Open Graph + Twitter tags present qua
<Meta property="og:…">so social previews hoạt động. - Canonical đặt với
<Link rel="canonical">(không changed qua JS sau khi load). - Routing dùng History API — không hash (
#/page) routes. - Rankable nội dung loaded với
createAsync/máy chủ functions, khôngonMount. - Bị thiếu các trang trả về thực 404 qua
<HttpStatusCode code={404} />. -
public/robots.txttồn tại, points để sitemap, và không block/api/dữ liệu routes. - XML sitemap generated (e.g.
solid-start-sitemap) với canonical các URL. - JSON-LD được kết xuất trong route component và present trong SSR HTML.
- URL Inspection (Search Console) xác nhận được kết xuất HTML matches.
- Trường Core Web Vitals checked trong CrUX / Search Console, không chỉ lab.
mental models
1. Library so với. meta-framework. SolidJS ( library) decides Cách UI cập nhật; SolidStart ( meta-framework) decides nơi nó renders. SEO là governed by thứ hai một. Bare SolidJS = CSR = rỗng shell. SolidStart SSR/SSG = nội dung trong HTML. luôn locate mà một bạn’re thực ra shipping.
2. kết xuất-chế độ ladder. cho bất kỳ route, pick highest rung nội dung cho phép: SSG (static, fastest, best cho ổn định nội dung) → SSR (dynamic, theo-yêu cầu) → streaming SSR (dữ liệu-nặng) → CSR (chỉ cho non-xếp hạng, authenticated views). Cao hơn rungs là tốt hơn cho cả hai các crawler và Core Web Vitals.
3. Hai waves, một goal. Google crawl trong Wave 1 (thô HTML) và renders trong Wave 2 (queued). đểàn bộ point của SolidStart SSR là để làm của bạn nội dung hoàn tất trong Wave 1 so bạn không bao giờ phụ thuộc on unpredictable Wave 2 queue.
4. Hydration ≠ resumability. SolidJS hydrates (download → execute → attach). Qwik resumes (không re-execution). Fine-grained reactivity speeds cập nhật sau khi hydration; nó không xóa hydration. giữ điều này straight và bạn’ll không bao giờ miscategorize SolidJS.
5. máy chủ-load cho bất cứ điều gì đó phải xếp hạng.
nếu nội dung là fetched trong onMount, nó lands sau khi HTML là được gửi — invisible
để Wave 1. Fetch nó với createAsync/máy chủ functions so nó baked vào
SSR phản hồi.
SolidJS SEO — bảng tra nhanh
SolidJS so với. SolidStart
| SolidJS (library) | SolidStart (meta-framework) | |
|---|---|---|
| Default kết xuất | CSR (rỗng shell) | SSR (nội dung trong HTML) |
| Kết xuất modes | CSR chỉ | SSR, SSG, streaming, CSR |
| Meta tags trong thô HTML | Không (đặt client-side) | Có (@solidjs/meta + SSR) |
| thực HTTP 404 | Không (soft 404) | Có (<HttpStatusCode>) |
| Sitemap generation | Manual | solid-start-sitemap plugin |
| SEO verdict (theo route) | Risky trừ khi bạn xây dựng trong SSR/SSG yourself | có thể là SEO-viable — verify mỗi route thực tế kết xuất chế độ và output; SolidStart không bảo đảm nó trang web-wide |
@solidjs/meta components
| Component | Sets |
|---|---|
<MetaProvider> | Wrapper đó collects tags during SSR (bắt buộc) |
<Title> | <title> |
<Meta> | mô tả, robots, OG, Twitter cards |
<Link> | canonical, hreflang, preload, stylesheets |
<Style> / <Base> | inline <style> / <base> |
Làm / không
- ✅ sử dụng
<Title>từ @solidjs/meta. ❌ Thô<title>trong máy chủ files. - ✅ History API routing. ❌ Hash (
#/page) routing. - ✅
createAsync/ máy chủ functions cho rankable dữ liệu. ❌onMountfetch. - ✅
<HttpStatusCode code={404} />. ❌ soft 404 (200 + shell).
Myth-busting
- ❌ “SolidJS is resumable like Qwik.” (bản dịch) «SolidJS là resumable như Qwik.» → Điều này hydrates (cheaply); chỉ Qwik resumes.
- ❌ “SolidJS is bad for SEO.” (bản dịch) «SolidJS là bad cho SEO.» → Bare CSR là; SolidStart SSR/SSG là fully indexable.
- ❌ “Google can’t read SolidJS.” (bản dịch) «Google không thể đọc SolidJS.» → Điều này có thể (modern Chromium); đó risk là Wave-2 delay, đã xóa by SSR.
SolidJS SEO mistakes để tránh
Shipping công khai nội dung với bare SolidJS CSR
Vì sao nó sai: đầu tiên phản hồi là app shell, so các crawler không nhận trang nội dung hoặc metadata immediately. Làm điều này thay vì: sử dụng SolidStart SSR hoặc route prerendering cho mỗi công khai route đó cần để xếp hạng.
Fetching rankable dữ liệu trong onMount
Vì sao nó sai: onMount chạy sau khi máy chủ phản hồi, leaving nội dung out
của thô HTML. Làm điều này thay vì: fetch với createAsync, route loaders, hoặc máy chủ
functions so dữ liệu là present during SSR.
Forgetting MetaProvider hoặc thêm thô tiêu đề
Vì sao nó sai: không có MetaProvider, @solidjs/meta không thể collect tags cho SSR;
thô <title> trong máy chủ file có thể override của nó output. Làm điều này thay vì: wrap
app trong MetaProvider và sử dụng <Title>, <Meta>, và <Link> consistently.
sử dụng hash routes hoặc soft 404s
Vì sao nó sai: #/page routes là poor phát hiện targets, và bị thiếu trang
đó trả về HTTP 200 looks như soft 404. Làm điều này thay vì: sử dụng History API
routes và đặt thực status với <HttpStatusCode code={404} />.
Calling fine-grained reactivity resumability
Vì sao nó sai: SolidJS vẫn hydrates; nó không resume máy chủ execution state way Qwik làm. Làm điều này thay vì: mô tả Solid advantage as efficient client cập nhật, sau đó verify thực tế máy chủ kết xuất và trường performance.
Trusting SSR không có kiểm tra phản hồi
Vì sao nó sai: route có thể sử dụng SolidStart và vẫn leave copy, metadata, hoặc JSON-LD trong client-chỉ code. Làm điều này thay vì: inspect View Nguồn và ban đầu network phản hồi sau khi mỗi kết xuất hoặc dữ liệu-loading thay đổi.
Audit SolidStart phản hồi từ command line
macOS / Linux — inspect status, metadata, và thân phản hồi nội dung
URL="https://example.com/blog/example-post"
curl -sSIL "$URL" | sed -n '1,12p'
curl -sSL "$URL" -o /tmp/solidstart-page.html
grep -Ei '<title>|name="description"|rel="canonical"|<h1|application/ld\+json' \
/tmp/solidstart-page.htmlđầu tiên phản hồi nên là thực thành công status cho trực tiếp route, và thô HTML nên contain route tiêu đề, mô tả, canonical, H1, và bất kỳ JSON-LD không có đang chạy JavaScript.
Windows PowerShell — chạy giống nhau thô-HTML kiểm tra
$url = "https://example.com/blog/example-post"
$response = Invoke-WebRequest -Uri $url
$response.StatusCode
$response.Content | Select-String -Pattern '<title>|name="description"|rel="canonical"|<h1|application/ld\+json'kiểm tra bị thiếu route trả về đúng 404
curl -sS -o /dev/null -w '%{http_code}\n' \
'https://example.com/this-route-should-not-exist'
# Expected: 404DevTools Console — list được kết xuất head các tín hiệu
({
title: document.title,
description: document.querySelector('meta[name="description"]')?.content,
canonical: document.querySelector('link[rel="canonical"]')?.href,
h1: [...document.querySelectorAll('h1')].map((node) => node.textContent.trim()),
})Chạy snippet trong trình duyệt Console, nhưng so sánh nó với command-line kết quả. nếu tín hiệu tồn tại chỉ trong được kết xuất DOM, nó là vẫn là đã thêm sau khi ban đầu HTML phản hồi.
Đo lường SolidStart SEO performance trong trường
Largest Contentful Paint by route loại
Chỉ số: Trường LCP cho công khai nội dung, marketing, và khác representative route groups.
Điều gì nó tells bạn: Liệu largest visible nội dung arrives promptly cho thực người dùng; SSR helps chỉ nếu dữ liệu, images, và hosting hoàn tất path.
Cách pull nó: sử dụng CrUX hoặc Search Console Core Web Vitals báo cáo, segmented by similar URL groups nơi có thể.
Benchmark / realistic range: sử dụng Google hiện tại trường-dữ liệu classification và trang web own pre-phát hành baseline; không substitute synthetic framework benchmark cho người dùng dữ liệu.
Cadence: Monthly và sau khi material kết xuất, hosting, hoặc image-phân phối thay đổi có accumulated trường dữ liệu.
Interaction để tiếp theo Paint
Chỉ số: Trường INP on interactive SolidJS routes.
Điều gì nó tells bạn: Liệu fine-grained cập nhật translate vào responsive thực interactions thay vì chỉ favorable library benchmarks.
Cách pull nó: sử dụng CrUX hoặc Search Console, sau đó reproduce poor trang groups với trình duyệt performance tooling để tìm dài interaction.
Benchmark / realistic range: So sánh với Google hiện tại classification và route group own baseline; framework alone không establish guaranteed range.
Cadence: Monthly và sau khi thêm lớn client-side components hoặc thứ ba-party scripts.
Cumulative Layout Shift
Chỉ số: Trường CLS cho SSR và streaming routes.
Điều gì nó tells bạn: Liệu hydration, streamed dữ liệu, images, hoặc muộn components move nội dung sau khi ban đầu HTML là displayed.
Cách pull nó: sử dụng CrUX hoặc Search Console cho standing KPI và DevTools cho diagnosis on affected templates.
Benchmark / realistic range: sử dụng Google hiện tại trường-dữ liệu classification và so sánh new releases với established route baseline.
Cadence: Monthly và sau khi thay đổi streaming boundaries, image dimensions, hoặc client-chỉ components.
Tools cho SolidJS SEO
- View Trang Nguồn (trình duyệt) — đó fastest SSR kiểm tra. Nếu nội dung của bạn là trong
đó thô HTML (không chỉ
<div id="root"></div>), SSR là hoạt động. - Google Search Console — URL Inspection — đó nguồn of truth cho điều gì Googlebot được crawl và được kết xuất; “View Tested Page → HTML” (bản dịch) «View Tested Trang → HTML» cho thấy đó được kết xuất output.
- Rich Kết quả Kiểm thử — validate JSON-LD dữ liệu có cấu trúc on một SolidStart trang.
- Bing Quản trị viên web Tools — URL Inspection — cho thấy Bing được kết xuất version, quan trọng vì Bing là hơn conservative về JavaScript hơn Google.
- Ahrefs Site Audit (JS kết xuất enabled) — crawl một SolidJS site đó way một kết xuất crawler sẽ, surfacing bị thiếu metadata và uncrawlable links.
solid-start-sitemap— xây dựng-time XML sitemap generation cho SolidStart.- CrUX / Search Console Core Web Vitals báo cáo — xác nhận đó INP/LCP/CLS advantage thực ra lands cho real người dùng, không chỉ trong đó lab.
- DevTools Network tab — inspect đó ban đầu HTML thân phản hồi để verify SSR nội dung (so với. nội dung injected sau JS chạy).
Tự kiểm tra: SolidJS SEO
Five nhanh các câu hỏi on SolidJS, SolidStart, và getting Solid trang web được lập chỉ mục. Pick câu trả lời cho mỗi, sau đó kiểm tra.
các tài nguyên worth của bạn time
My writing
- JavaScript SEO Các vấn đề & Thực hành tốt nhất — my definitive hướng dẫn để kết xuất, DOM parity, crawlable links, và getting JS-được xây dựng nội dung được lập chỉ mục; foundation SolidJS trang web xây dựng on.
- Core Web Vitals: Hoàn tất Hướng dẫn — Điều gì INP, LCP, và CLS đo lường và Cách họ factor vào SEO — các chỉ số SolidJS runtime helps với.
- Người mới bắt đầu Hướng dẫn để kỹ thuật SEO — nơi kết xuất và framework lựa chọn fit trong bigger picture.
My speaking
- SMX Nâng cao 2018: SEO cho JavaScript Các framework (SlideShare) — my walkthrough của Cách các công cụ tìm kiếm xử lý JS các framework.
- JavaScript SEO — Ungagged 2019 (SlideShare) — kết xuất modes, hai-wave xử lý, và diagnosis.
từ khoảng ngành
- SolidStart — Head và Metadata — chính-nguồn hướng dẫn để @solidjs/meta và SSR head tags.
- SolidStart — Route Pre-kết xuất — configuring SSG trong
app.config.ts. - SolidJS — Fine-Grained Reactivity — các tín hiệu và không-virtual-DOM cập nhật straight từ tài liệu.
- Google — Understand JavaScript SEO Basics — Google own rules cho crawlable links, canonicals, và kết xuất pipeline.
- solid-bắt đầu-sitemap plugin — xây dựng-time XML sitemap generation cho SolidStart.
- js-framework-benchmark (hiện tại kết quả) — dài-đang chạy benchmark nơi SolidJS sits near top và ahead của React on cập nhật-nặng hoạt động.
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 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.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
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.