Communitygithub.com

ahmedbinirfan/mcmaster-fast

套用McMaster-Carr風格的技術,讓網站感覺瞬間載入:HTML優先渲染、應用外殼導航、意圖預先擷取、分層快取、關鍵CSS、依頁面分割的JS以及版面穩定性。當使用者希望網站極快或反應迅速、提及McMaster-Carr/mcmaster.com、即時頁面、懸停預先擷取,或要求在其他網站上實作這些技術時使用。

mcmaster-fast 是什麼?

此技能教導AI代理如何將McMaster-Carr(mcmaster.com)的極致效能技術應用到任何網站上,無論其技術堆疊為何。McMaster-fast的核心在於「操作順序」勝過「框架時尚」,透過伺服器渲染的HTML達成首次繪製(FCP約64ms,TTFB約19ms)、持久化外殼(header/cart保持掛載,內容在35ms內交換)、意圖預先擷取(懸停時預先取得下一頁HTML)以及服務工作者快取(重複造訪時從本地提供內容)。它提供一個「優先級階梯」,建議從能讓LCP低於200ms的最低階梯開始,逐步實作,避免一次引入過多函式庫。此技能適用於Claude Code、Cursor、Codex等平台,支援Next.js、vanilla HTML、現有SPA等多種架構,並強調硬性規則如「HTML是產品,JS是選擇性增強」、「不複製YUI或ASP.NET,而是複製操作順序」,確保網站達到近乎即時的反應與極低的CLS。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add ahmedbinirfan/mcmaster-fast

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

mcmaster-fast 是做什麼的?

讓其他網站感覺像 mcmaster.com:首次繪製在數十毫秒內,下一頁在網址列更新前就完成。

技術堆疊不重要。McMaster 在 ASP.NET、YUI 和 ScriptCombiner 上做到這一點。順序和請求數量才是關鍵,框架潮流則不是。

他們實際的做法

從實際網站(2026-09-13)以及 Wes Bos 的拆解報告(klinke.studio 筆記)中觀察到:

層級McMaster 的做法為何感覺即時
第一個位元組伺服器渲染的 HTML。瀏覽器在 JS 之前即繪製。熱外殼下 FCP ~64ms,TTFB ~19ms。使用者看到頁面,而不是等待套件載入的轉圈圈。
外殼#ShellLayout_Cntnr + #MainContent。Header/購物車保持掛載。使用 history.pushState。點擊類別後,同一個 header 節點繼續使用,內容在 35ms 內交換。
預測懸停/意圖在點擊前預先擷取下一個 HTML。點擊變成快取命中 + DOM 交換。
重複造訪服務工作者對 GET 導航(非 PDF)採用快取優先。首次載入後快取 /。原始 HTML 約 ~200ms(mc-turn);SW 在本機提供服務。
瀑布流對圖片主機使用 dns-prefetch。對 woff2 字型、logo、LCP 精靈圖、頁面 JS/CSS、ShellDynamic.aspx 使用 preload。瀏覽器在 CSS 中發現字型/LCP 之前就開始載入它們。
CSS約 32KB 的通用 CSS 內嵌在 <head> 的 <style> 中。其餘透過頁面專用組合器載入。首次版面配置不需要額外的 CSS 請求。
JS頁面專用的 ScriptCombiner 套件(?files=…)。非同步。WebParts 在繪製後載入。目錄頁面不會下載結帳程式碼。
資源版本化網址(/mv1789156784/、?ver=)。Cache-Control: public,immutable,max-age=31536000。圖片主機 images1.mcmaster.com。網格使用的精靈圖。長達一年的快取,無需失效處理,請求數量少。
穩定性預留框/精靈圖。測得 CLS 0。圖片到達時不會發生回流。
重量第一方分析(/trk/)。無廣告。CSP 限制為 *.mcmaster.com。頁面本身就是產品。

HTML 文件本身在 Akamai 上的快取設定為 Cache-Control: no-cache 和 x-check-cacheable: NO。不要 複製「CDN 快取所有 HTML」。他們在瀏覽器中快取外殼,並在邊緣節點快取不可變靜態檔案。

優先級階梯

在讓頁面在熱快取下 LCP 低於 ~200ms 的第一個階梯停止。不要在一個 PR 中同時安裝 Workbox、精靈圖管線和 Speculation Rules。

  1. 提供瀏覽器可直接繪製的 HTML。 SSR 或靜態 HTML。第一個畫面不要使用客戶端獨占渲染。移除建構第一個畫面的 JS。
  2. 解除首次繪製的阻塞。 僅內嵌首屏 CSS(或一個小型阻塞樣式表)。對 LCP 圖片和 woff2 字型使用 preload(加上 crossorigin)。每個圖片都設定 width/height(或 CSS aspect-ratio)。
  3. 不可變靜態檔案。 指紋碼或版本查詢參數。設定 Cache-Control: public, immutable, max-age=31536000。
  4. 持久化 chrome + 內容交換。 共享佈局。下一次導航只更換一個內容節點並執行 pushState。不要重新掛載 header。
  5. 意圖預先擷取。 在懸停/視口內推測下一個文件。設定上限。永遠不預先擷取結帳、搜尋 API 或需要認證的 HTML。
  6. 導航用 SW(選擇性)。 對公開外殼/首頁的 GET 導航使用快取優先。部署時清除。從頁面觸發失效,而不是仰賴聰明的 SW。如果網站主要是私有的,則跳過。
  7. 頁面專用 JS。 路由分割。將分析工具延遲到閒置時執行。刪除非產品核心的第三方標籤。
  8. 精靈圖/圖片主機 僅在單一畫面上有數十個小圖示時使用。低於這個數量時,HTTP/2 加上少量壓縮圖片就足夠了。

代理工作流程

當被要求以這種方式讓網站變快時:

  1. 追蹤實際的首次載入和一次應用內導航(網路 + 繪製內容)。指出目前阻擋 LCP 的元素和 JS。
  2. 套用最低的缺失階梯。每次迭代只做一個變更,除非使用者要求全面改進。
  3. 優先使用儲存庫中已有的平台功能(Next.js 的 <Link>、next/font、App Router 佈局),而不是新函式庫。
  4. 完成一次迭代後,留下一個檢查點:LCP / FCP 數值,或一個小型斷言,確認外殼節點在客戶端導航時被重複使用。
  5. 閱讀 techniques.md 以獲取您正在實作之階梯的具體配方。閱讀 recipes.md 以獲取 Next.js / vanilla / 現有 SPA 的對應實作。

硬規則

  • HTML 是產品。JS 是選擇性增強。
  • 預先擷取是一個提示,不是爬蟲。僅限同源 GET 文件。
  • 個人化 HTML 應使用 no-store 或僅限 SW 搭配短 TTL。絕不將購物車/帳戶 HTML 放在共用 CDN 快取上。
  • 不要添加攔截每個資源的服務工作者。僅導航文件,比照 McMaster 的 ServiceWorkerJS.aspx。
  • 不要複製 YUI、精靈圖或 ASP.NET。複製操作順序。
  • 不要把一個快速的 HTML 頁面「現代化」成客戶端 SPA 當作解決方案。
  • 第三方腳本(廣告、標籤管理工具、聊天)預設視為有罪。讓它們遠離首次繪製,否則直接刪除。
  • 當您跳過一個較低價值的階梯時,使用 ponytail: 標記捷徑。

完成條件

  • 首次造訪:HTML 在任何應用程式套件執行前就繪製完成。LCP 是由伺服器傳送的元素,而不是客戶端渲染的。
  • 下一次點擊:chrome 保持掛載;只有內容區域交換。
  • 重複造訪首頁/外殼:從本機或記憶體快取提供服務。
  • 字型和 LCP 圖片在前 1–2 次往返中載入,而不是在 CSS 之後才被發現。
  • 您所處理的頁面上 CLS 保持在接近 0。

相關技能