工程趣聞 2026 年 10 月 2 日

2026-10-02 — IANA 解釋 example.com 改版:頁面拆出 JS 以省頻寬

primary=https://www.oliverdunk.com/2026/09/30/iana-reply primary=https://iana.org/help/example-domains primary=https://www.rfc-editor.org/rfc/rfc2606.html primary=https://example.com/s.js

IANA 解釋 example.com 改版:頁面拆出 JS 以省頻寬

Oliver Dunk 公開 IANA 回信 · 2026-09-30(回信來自 IANA 的 Kim Davies)

example.com 的首頁被拆成兩份:一頁只含一段文字與連結的精簡 HTML,其餘展示效果移到獨立的 /s.js。IANA 說這樣做是為了降低頻寬需求,因為多數流量是不會執行 JavaScript 的自動化請求。

Google 的 Developer Relations Engineer Oliver Dunk 在 部落格貼出他向 IANA 詢問改版原因後收到的回信,回信日期為 2026-09-30。

原本的問題

example.com 自 RFC 2606(1999 年 6 月)起就被保留為文件範例用的第二層網域,與 example.net、example.org 並列。它本意是寫在文件裡的假網址,不是一個服務。

但現實中很多人把它當成「一定會回 200 的網站」:用來測網路是否通、寫進健康檢查、塞進範例設定檔後忘了替換。結果是這個站台的流量大半來自腳本,而這些腳本只需要拿到 HTML,不需要任何裝飾。

Davies 在信中的說法是,多數流量為自動化流量,不會載入 JavaScript;他也承認,忘了改範例設定的使用者會帶來附帶流量,但 IANA 並不鼓勵拿它做可用性測試。

實際看到的改動

我們直接抓了現在的 example.com。回應標頭中的 last-modified 為 Mon, 28 Sep 2026 16:19:32 GMT,伺服器為 server: cloudflare。HTML 本體只剩一個 <p>、一個「Learn more」連結,以及一行腳本引用。

<p>This domain is for use in documentation examples
without needing permission. This is not a service,
avoid relying on it for testing and monitoring purposes.</p>
<a href=https://iana.org/help/example-domains>Learn more</a>
<script src=/s.js></script>

被拆出去的 /s.js 做了兩件事。第一,在原段落後插入阿拉伯文、中文、法文、俄文、西班牙文五種語言的同一句聲明。第二,插入一個書本圖示,並以 setInterval 每 5000 毫秒(5e3)逐字淡入淡出輪播各語言版本,同時用 prefers-reduced-motion 媒體查詢在使用者要求減少動態時關閉過渡效果。

對誰有影響

使用者是否受影響該檢查什麼
用 curl 或 HTTP client 抓首頁的腳本幾乎不受影響HTML 仍是 200,但內容比原本短;若斷言比對特定文字,要改成新文字
用 headless 瀏覽器截圖或比對 DOM 的測試會受影響JS 執行後 DOM 會多出翻譯段落與 SVG,輪播也會讓畫面隨時間改變
把它當連線檢查或監控目標的 CI、設備韌體風險上升IANA 明說 HTTP 服務只是 courtesy,不保證可用,改用自己控制的端點

IANA 的 Example Domains 說明頁(頁面標示 Last revised 2026-09-27)原文寫得更直白:這些網站是 best effort,並非為支援正式應用而設計,並「strongly recommend」不要讓應用依賴範例網域有 HTTP 服務。

為什麼這樣拆有道理

把可有可無的呈現邏輯放在 JS,等於替流量分流:不跑 JS 的機器人只付出一小段 HTML 的成本,真人瀏覽器才會多抓一個檔案。回信沒有公布頻寬數字或改版前後的對照,所以實際省了多少,目前沒有官方資料。

首頁文字本身也在做同一件事:在頁面上直接告訴人「這不是服務,避免用來測試與監控」。這與 RFC 2606 只保留名稱、不承諾任何服務的立場一致。

原始來源:Oliver Dunk:IANA 回信、IANA Example Domains、RFC 2606、example.com/s.js


End of article
0
Would love your thoughts, please comment.x
()
x