<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>网站上线与运行基础 on 远栈</title><link>https://stackonward.com/zh/series/website-delivery-foundations/</link><description>Recent content in 网站上线与运行基础 on 远栈</description><generator>Hugo</generator><language>zh-CN</language><atom:link href="https://stackonward.com/zh/series/website-delivery-foundations/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker 数据卷、文件权限与密钥怎么配置</title><link>https://stackonward.com/zh/posts/docker-volume-permissions-secrets/</link><pubDate>Thu, 03 Sep 2026 00:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/docker-volume-permissions-secrets/</guid><description>&lt;p&gt;数据库和应用状态写入 volume，只读配置使用 bind mount，密钥通过文件挂载给指定服务。配置完成后还要核对进程 UID/GID，并分别执行容器重建和独立恢复。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/docker-volume-permissions-secrets/zh/storage-boundaries.svg" alt="容器把数据库状态写入 named volume，只读读取宿主配置，并从 secrets 文件读取密码的结构图" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;数据库写入 named volume，配置只读挂载，密钥仅挂载到需要它的服务。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="根据数据用途选择-named-volumebind-mount-或-tmpfs"&gt;根据数据用途选择 named volume、bind mount 或 tmpfs&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;类型&lt;/th&gt;
					&lt;th&gt;适合内容&lt;/th&gt;
					&lt;th&gt;优点&lt;/th&gt;
					&lt;th&gt;主要风险&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;named volume&lt;/td&gt;
					&lt;td&gt;数据库、队列、应用持久状态&lt;/td&gt;
					&lt;td&gt;生命周期由 Docker 管理，路径不与单台主机布局强耦合&lt;/td&gt;
					&lt;td&gt;宿主备份和迁移要明确卷名与驱动&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;bind mount&lt;/td&gt;
					&lt;td&gt;Caddyfile、明确的数据目录、宿主脚本&lt;/td&gt;
					&lt;td&gt;路径可见，便于现有备份与权限工具管理&lt;/td&gt;
					&lt;td&gt;强依赖宿主路径、属主和 SELinux/AppArmor 条件&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;tmpfs&lt;/td&gt;
					&lt;td&gt;临时敏感文件、无需持久化的高速临时数据&lt;/td&gt;
					&lt;td&gt;不写入持久磁盘&lt;/td&gt;
					&lt;td&gt;重启即丢失，容量占用内存&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a href="https://docs.docker.com/engine/storage/" target="_blank" rel="noopener"&gt;Docker storage 文档&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;建议优先用 volume 保存容器生成的持久数据；bind mount 更适合需要直接共享和管理的宿主文件。镜像层不适合承载运行数据，容器删除时可写层也会消失。&lt;/p&gt;</description></item><item><title>Docker 端口怎么暴露：127.0.0.1、0.0.0.0、防火墙与容器网络</title><link>https://stackonward.com/zh/posts/docker-port-firewall-loopback/</link><pubDate>Wed, 02 Sep 2026 23:50:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/docker-port-firewall-loopback/</guid><description>&lt;p&gt;判断 Docker 端口是否暴露，需要分别查看容器内监听地址、宿主机端口绑定，以及防火墙和云安全组。容器内监听 &lt;code&gt;0.0.0.0&lt;/code&gt;，不等于该端口已经暴露到公网。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/docker-port-firewall-loopback/zh/network-boundaries.svg" alt="公网经过云安全组和宿主防火墙访问反向代理，应用与数据库只在 Docker 网络内通信的分层图" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;应用和数据库只在 Docker 网络通信；公网只能到达反向代理开放的端口。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="监听地址宿主绑定和服务名属于不同网络层"&gt;监听地址、宿主绑定和服务名属于不同网络层&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;配置位置&lt;/th&gt;
					&lt;th&gt;示例&lt;/th&gt;
					&lt;th&gt;含义&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;应用进程监听&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;0.0.0.0:8080&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;接受当前容器所有网络接口上的 8080 连接&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;应用进程监听&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;127.0.0.1:8080&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;只接受同一容器回环接口的连接&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Docker 端口发布&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;127.0.0.1:8080:8080&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;宿主机本地可通过 8080 访问容器 8080&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Docker 端口发布&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;0.0.0.0:8080:8080&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;宿主机全部 IPv4 接口发布 8080，可能被公网访问&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Compose 内部访问&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;http://app:8080&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;同网络服务通过服务名访问容器端口&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;两处 &lt;code&gt;0.0.0.0&lt;/code&gt; 的作用不同。应用在容器内监听全部接口，是为了让同网络代理访问；Docker 把端口发布到宿主全部接口，则扩大了宿主机入口。&lt;/p&gt;</description></item><item><title>502 和 504 怎么排查：反向代理、Docker 网络与上游超时</title><link>https://stackonward.com/zh/posts/502-504-troubleshooting/</link><pubDate>Wed, 02 Sep 2026 23:40:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/502-504-troubleshooting/</guid><description>&lt;p&gt;502 和 504 都由网关或反向代理返回，但含义不同：502 表示代理没有从上游得到可用响应，504 表示代理等待上游响应超过时限。排查时先找到产生状态码的那一层，再从该层所在的网络访问上游。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/502-504-troubleshooting/zh/gateway-failure-map.svg" alt="客户端经过 CDN 和反向代理访问应用时，连接失败产生 502、等待超时产生 504 的故障图" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;连接拒绝、解析失败和无效响应通常指向 502；上游等待超过代理期限通常指向 504。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="确认哪一层返回-502-或-504"&gt;确认哪一层返回 502 或 504&lt;/h2&gt;
&lt;p&gt;浏览器前面可能同时有 CDN、云负载均衡、Caddy 或 Nginx。先保留状态码、响应头、时间和请求 ID：&lt;/p&gt;</description></item><item><title>网站换域名怎么迁移：301、308、Canonical 和 Search Console</title><link>https://stackonward.com/zh/posts/website-domain-migration/</link><pubDate>Wed, 02 Sep 2026 23:30:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/website-domain-migration/</guid><description>&lt;p&gt;网站换域名时，每个旧 URL 都应单跳到内容对应的新 URL，并保留路径和必要的查询参数。新站的 canonical、站内链接、站点地图、结构化数据和分析配置全部切到新域名；旧域名继续提供有效的 HTTPS 和永久重定向。&lt;/p&gt;</description></item><item><title>网站打开慢怎么排查：从 DNS、TTFB 到 LCP</title><link>https://stackonward.com/zh/posts/slow-website-troubleshooting/</link><pubDate>Wed, 02 Sep 2026 23:20:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/slow-website-troubleshooting/</guid><description>&lt;p&gt;网站变慢时，先确定影响范围，再把一次加载拆成 DNS、连接、TLS、等待首字节、正文下载和浏览器渲染。只有定位到变慢的区间，服务器、CDN、数据库和前端优化才有明确对象。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/slow-website-troubleshooting/zh/performance-path.svg" alt="从用户范围确认到 curl 分段耗时、网络瀑布、服务器指标和浏览器主线程的性能排查路径" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;curl 判断网络和首字节耗时；服务器指标与浏览器时间线分别定位后端和渲染问题。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="先锁定受影响的-url用户和时间"&gt;先锁定受影响的 URL、用户和时间&lt;/h2&gt;
&lt;p&gt;排查前记录具体 URL、发生时间和复现条件：&lt;/p&gt;</description></item><item><title>静态资源缓存策略：Cache-Control、ETag、文件指纹和 CDN</title><link>https://stackonward.com/zh/posts/static-asset-cache-control/</link><pubDate>Wed, 02 Sep 2026 23:10:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/static-asset-cache-control/</guid><description>&lt;p&gt;静态资源不能使用一条统一缓存规则。带内容指纹的 CSS、JavaScript 和字体可以长期缓存；HTML 要能较快发现新版本；未改名的图片只能在可接受的旧内容窗口内缓存；包含账号或支付信息的响应不应进入共享缓存。&lt;/p&gt;</description></item><item><title>HTTPS 证书自动签发与续期：Caddy、ACME 和失败排查</title><link>https://stackonward.com/zh/posts/https-certificate-automatic-renewal/</link><pubDate>Wed, 02 Sep 2026 23:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/https-certificate-automatic-renewal/</guid><description>&lt;p&gt;Caddy 可以自动申请和续期 HTTPS 证书。自动 HTTPS 依赖域名配置、DNS、ACME 验证入口和证书存储；任何一项不可用，签发或续期都会失败。容器已经启动，只能说明 Caddy 进程正在运行。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/https-certificate-automatic-renewal/zh/acme-renewal-flow.svg" alt="Caddy 从读取域名、完成 ACME 验证、保存证书到后台续期和外部监测的流程图" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;签发后，证书、私钥和 ACME 账号状态写入数据目录；后台续期仍会再次使用验证入口。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="自动-https-的生效条件"&gt;自动 HTTPS 的生效条件&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://caddyserver.com/docs/automatic-https" target="_blank" rel="noopener"&gt;Caddy 的 Automatic HTTPS 文档&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;要求以下条件同时成立：&lt;/p&gt;</description></item><item><title>2026 阿里云 OSS 绑定自定义 CDN 域名：CNAME、HTTPS、缓存与验证</title><link>https://stackonward.com/zh/posts/aliyun-oss-custom-cdn-domain/</link><pubDate>Wed, 02 Sep 2026 11:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/aliyun-oss-custom-cdn-domain/</guid><description>&lt;p&gt;阿里云 OSS 绑定自定义 CDN 域名，需要依次处理域名归属、OSS 回源、DNS CNAME、HTTPS 和缓存规则。域名在哪家购买并不重要，记录要添加到当前的权威 DNS。CNAME 生效后，还要检查证书、源站内容和重复 GET 的缓存状态。&lt;/p&gt;</description></item><item><title>Caddy、Nginx、Nginx Proxy Manager 怎么选：反向代理与 HTTPS 对比</title><link>https://stackonward.com/zh/posts/caddy-nginx-npm-comparison/</link><pubDate>Wed, 02 Sep 2026 10:30:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/caddy-nginx-npm-comparison/</guid><description>&lt;p&gt;少量站点、希望配置进入 Git 并自动处理 HTTPS，可以先选 Caddy；已有大量 Nginx 配置或需要细粒度模块能力，继续用 Nginx；更习惯图形界面、管理的站点也不多，再考虑 Nginx Proxy Manager。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/caddy-nginx-npm-comparison/zh/proxy-decision-tree.svg" alt="根据文件或图形界面维护方式选择 Caddy、Nginx 和 Nginx Proxy Manager 的决策树" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;先选维护方式，再看现有资产。大多数小型新站点不需要从性能跑分开始选。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="配置方式和维护对象"&gt;配置方式和维护对象&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;维度&lt;/th&gt;
					&lt;th&gt;Caddy&lt;/th&gt;
					&lt;th&gt;Nginx&lt;/th&gt;
					&lt;th&gt;Nginx Proxy Manager&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;日常配置&lt;/td&gt;
					&lt;td&gt;Caddyfile 或 JSON&lt;/td&gt;
					&lt;td&gt;Nginx 配置文件&lt;/td&gt;
					&lt;td&gt;Web 管理界面&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;HTTPS&lt;/td&gt;
					&lt;td&gt;自动签发和续期是默认能力&lt;/td&gt;
					&lt;td&gt;通常搭配 Certbot、acme.sh 或云证书&lt;/td&gt;
					&lt;td&gt;界面集成常见证书操作&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Git 管理&lt;/td&gt;
					&lt;td&gt;很适合&lt;/td&gt;
					&lt;td&gt;很适合&lt;/td&gt;
					&lt;td&gt;主要状态在数据库中&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;WebSocket&lt;/td&gt;
					&lt;td&gt;常见场景自动处理&lt;/td&gt;
					&lt;td&gt;需要正确设置升级相关头&lt;/td&gt;
					&lt;td&gt;由生成的 Nginx 配置处理&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;缓存和限流&lt;/td&gt;
					&lt;td&gt;可以配置&lt;/td&gt;
					&lt;td&gt;能力成熟、控制细&lt;/td&gt;
					&lt;td&gt;受界面与高级配置范围影响&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;额外状态&lt;/td&gt;
					&lt;td&gt;配置和证书目录&lt;/td&gt;
					&lt;td&gt;配置、证书和相关脚本&lt;/td&gt;
					&lt;td&gt;应用、数据库、证书和生成配置&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;三者都能完成常见的 HTTPS 入口和反向代理。文件配置便于审查和回滚；数据库配置便于界面操作，但备份必须同时覆盖数据库和证书。&lt;/p&gt;</description></item><item><title>Docker Compose 生产部署指南：镜像、健康检查、密钥与持久化</title><link>https://stackonward.com/zh/posts/docker-compose-production/</link><pubDate>Wed, 02 Sep 2026 10:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/docker-compose-production/</guid><description>&lt;p&gt;&lt;code&gt;docker compose up -d&lt;/code&gt; 只能说明容器已经启动。生产部署还要固定镜像、保存数据、隔离端口、限制资源，并验证容器和主机重启后的恢复结果。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/docker-compose-production/zh/compose-topology.svg" alt="单机 Docker Compose 生产部署中反向代理、应用容器、持久化卷、密钥和日志的拓扑图" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;公网只开放反向代理的 80/443；应用端口留在回环地址或容器网络中。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="compose-适合什么样的生产服务"&gt;Compose 适合什么样的生产服务&lt;/h2&gt;
&lt;p&gt;单台主机、服务数量不多、依赖关系清楚时，Compose 足以承担部署：&lt;/p&gt;</description></item><item><title>DNS 记录类型详解：A、AAAA、CNAME、TXT、CAA 怎么配置</title><link>https://stackonward.com/zh/posts/dns-record-types/</link><pubDate>Wed, 02 Sep 2026 09:30:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/dns-record-types/</guid><description>&lt;p&gt;网站直接指向服务器时常用 A 或 AAAA；接入 CDN、对象存储和托管平台时常用 CNAME；TXT 多用于域名归属和邮件策略；CAA 用来限制证书颁发机构。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://stackonward.com/images/posts/dns-record-types/zh/dns-record-map.svg" alt="A、AAAA、CNAME、TXT 和 CAA 五种 DNS 记录用途的关系图" loading="lazy" decoding="async"&gt;
 &lt;figcaption&gt;A、AAAA 和 CNAME 会影响访问流量去哪里；TXT 与 CAA 保存验证、策略或证书限制。&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id="aaaaacnametxtcaa-有什么区别"&gt;A、AAAA、CNAME、TXT、CAA 有什么区别&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;记录&lt;/th&gt;
					&lt;th&gt;记录值&lt;/th&gt;
					&lt;th&gt;常见用途&lt;/th&gt;
					&lt;th&gt;容易踩的坑&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;A&lt;/td&gt;
					&lt;td&gt;IPv4 地址&lt;/td&gt;
					&lt;td&gt;域名指向 IPv4 服务器&lt;/td&gt;
					&lt;td&gt;服务器换 IP 后忘记更新&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AAAA&lt;/td&gt;
					&lt;td&gt;IPv6 地址&lt;/td&gt;
					&lt;td&gt;域名指向 IPv6 服务器&lt;/td&gt;
					&lt;td&gt;服务只支持 IPv4，却留下可解析的 AAAA&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;CNAME&lt;/td&gt;
					&lt;td&gt;另一个域名&lt;/td&gt;
					&lt;td&gt;CDN、托管平台、对象存储&lt;/td&gt;
					&lt;td&gt;与同名 A、TXT、MX 等记录冲突&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;TXT&lt;/td&gt;
					&lt;td&gt;一段文本&lt;/td&gt;
					&lt;td&gt;域名归属、SPF、DKIM、DMARC&lt;/td&gt;
					&lt;td&gt;主机名重复拼接，或复制值时多了空格&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;CAA&lt;/td&gt;
					&lt;td&gt;CA 标识&lt;/td&gt;
					&lt;td&gt;限制哪些机构可以签发证书&lt;/td&gt;
					&lt;td&gt;漏掉正在使用的 CA，导致续期失败&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;不同控制台会把 DNS 名称标成“主机记录”“名称”或“Name”。每条记录都包含名称、类型、值和 TTL。&lt;a href="https://docs.cloud.google.com/dns/docs/records-overview?hl=zh-cn" target="_blank" rel="noopener"&gt;Google Cloud DNS 的记录概览&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;列出了常见用途；A、CNAME 等基础语义见 &lt;a href="https://www.rfc-editor.org/rfc/rfc1034" target="_blank" rel="noopener"&gt;RFC 1034&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;，AAAA 见 &lt;a href="https://www.rfc-editor.org/rfc/rfc3596" target="_blank" rel="noopener"&gt;RFC 3596&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;，CAA 见 &lt;a href="https://www.rfc-editor.org/rfc/rfc8659" target="_blank" rel="noopener"&gt;RFC 8659&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;。&lt;/p&gt;</description></item><item><title>域名访问流程详解：从 DNS、TLS、CDN、反向代理到应用</title><link>https://stackonward.com/zh/posts/domain-request-flow/</link><pubDate>Wed, 02 Sep 2026 09:00:00 +0800</pubDate><guid>https://stackonward.com/zh/posts/domain-request-flow/</guid><description>&lt;p&gt;在浏览器输入一个网址后，请求通常要经过 DNS、网络连接、TLS、CDN 或反向代理，最后才到应用。返回的 HTML 也不是终点，浏览器还要继续下载样式、脚本、字体和图片。&lt;a href="https://developer.mozilla.org/zh-CN/docs/Learn_web_development/Getting_started/Web_standards/How_the_web_works" target="_blank" rel="noopener"&gt;MDN 对网页工作方式的说明&lt;span class="sr-only"&gt;（在新标签页打开）&lt;/span&gt;&lt;/a&gt;也把 DNS、HTTP 请求、服务器响应和浏览器组装页面列为连续环节。&lt;/p&gt;</description></item></channel></rss>