一句話總結:PWA 讓拍賣網站用不到原生 App 三分之一的成本,就能實現推播通知、離線瀏覽、桌面安裝等核心功能,是 2026 年拍賣平台性價比最高的技術路線。
「你那個拍賣網站能不能裝到手機桌面?每次要開瀏覽器找書籤好麻煩。」——這句話,我在做拍賣平台的這幾年大概聽了上百遍。其實答案很簡單:用 PWA 就對了。
PWA(Progressive Web App)是一種讓網站具備原生 App 特性的技術方案。 它透過 Service Worker、Web App Manifest 和 HTTPS 三個核心元件,讓你的拍賣網站可以被「安裝」到手機桌面、支援推播通知、甚至在沒有網路的情況下瀏覽已快取的拍品資訊。重點是——買家完全不需要去 App Store 下載任何東西。
PWA 到底能幫拍賣網站解決什麼問題?
PWA 最核心的價值,是消除「下載 App」這道門檻。 根據 Google 的研究數據,每多一個步驟,用戶流失率就增加約 20%。也就是說,從「看到你的拍品」到「打開 App Store → 搜尋 → 下載 → 開啟 → 註冊」,這五個步驟大概只剩 33% 的人會走完。PWA 把這條路縮短成「點開網頁 → 加到桌面」,兩步搞定。
對拍賣平台來說,PWA 能解決三個最痛的問題:
- 推播通知:出價被超越、追蹤商品即將結標、得標後的付款提醒——這些通知不用 App 也能推了(iOS 16.4 起正式支援)
- 離線瀏覽:買家在捷運上沒訊號,還是能看他之前瀏覽過的拍品清單和圖片
- 載入速度:Service Worker 快取靜態資源後,二次造訪的頁面載入時間可以壓到 1 秒以內
有個做公仔收藏品拍賣的客戶跟我說,他們從純網頁改成 PWA 之後,行動端的回訪率提升了 42%,推播通知的點擊率(CTR)達到 12.3%,比 Email 通知的 3.1% 高了快四倍。關鍵是開發成本只花了大概 25 萬,不到做原生 App 的五分之一。
Service Worker 的快取策略怎麼設計才合理?
Service Worker 是 PWA 的靈魂,而快取策略直接決定了用戶體驗的好壞。 拍賣網站跟一般內容網站不同,有些資料必須即時(像目前出價金額),有些可以快取(像商品圖片和描述)。搞混了,輕則顯示過期價格,重則讓人用舊價格下標——那就出大事了。
拍賣網站建議採用分層快取策略:
| 資料類型 | 快取策略 | 原因 |
|---|---|---|
| 拍品圖片 | Cache First | 圖片不會變,優先用快取,省頻寬 |
| 拍品描述 | Stale While Revalidate | 先顯示快取版本,背景更新 |
| 目前出價 | Network Only | 必須即時,絕不能用快取 |
| 結標時間 | Network First | 可能因防狙擊延長,優先拿最新的 |
| 靜態資源(CSS/JS) | Cache First | 搭配版本號控制更新 |
這裡有個實務上的眉角:拍品的結標時間不能用 Cache First。 因為很多拍賣平台有防狙擊機制,結標前幾分鐘有人出價會自動延長。如果買家看到的是快取裡的舊結標時間,可能以為還有 10 分鐘,結果商品早就標完了。
技術上的建議是用 Workbox 來管理 Service Worker,它提供了現成的快取策略 API,不用自己從頭寫。搭配 Laravel Mix 或 Vite 的 PWA 插件,整合起來大概半天就能搞定基本架構。
推播通知要怎麼做才不會被買家關掉?
推播通知是 PWA 在拍賣場景裡最有價值的功能,但用得太兇會被秒關。 根據 Localytics 的統計,超過 50% 的用戶會在收到 5 則以上不相關推播後直接關閉通知權限。拍賣平台必須精準拿捏推播的時機和頻率。
推播通知的黃金守則:
- 只推跟用戶有關的事:他追蹤的商品被出價、他的出價被超越、他得標了——這些推。全站促銷?用 Email 就好
- 加上行動按鈕:「立即出價」「查看拍品」,讓用戶一按就到對的頁面,別只丟一句「有人出價了」然後導去首頁
- 尊重時區和時段:凌晨兩點推通知,那是在趕客人走
- 提供細粒度控制:讓用戶自己選要收哪些通知——出價更新、結標提醒、得標通知可以分開設定
Web Push 的技術架構大致是這樣:前端透過 Notification.requestPermission() 取得用戶授權,然後向推播服務(VAPID)註冊取得 subscription endpoint,後端在觸發事件(如出價被超越)時,透過這個 endpoint 推送通知。
搭配 Laravel 的通知系統,可以用 via(['webpush', 'database', 'mail']) 一行搞定多管道通知。用戶在線就推 Web Push,離線就存 database 下次登入顯示,重要的再補一封 Email。
離線體驗要做到什麼程度才夠?
拍賣網站的離線體驗不需要做到 100%,但「能看」和「能操作」要分清楚。 離線時讓用戶瀏覽之前看過的拍品、查看自己的出價紀錄、瀏覽收藏清單——這些是合理的。離線出價?那就算了,價格是即時的,離線出價沒有意義。
實務上建議的離線功能清單:
- ✅ 瀏覽已快取的拍品頁面(含圖片)
- ✅ 查看個人出價紀錄和收藏清單
- ✅ 瀏覽拍品分類和搜尋頁面骨架
- ❌ 出價(需要即時驗證目前最高價)
- ❌ 付款(需要金流 API)
- ❌ 即時聊天(需要 WebSocket 連線)
離線時顯示一個友善的提示很重要,別讓用戶按了「出價」按鈕才跳錯誤。可以用 navigator.onLine 偵測網路狀態,在離線時把出價按鈕灰掉,旁邊顯示「目前離線,恢復網路後即可出價」。
如果你的拍賣網站已經有響應式設計的底子,加上 PWA 的離線功能其實不難。核心就是寫好 Service Worker 的 fetch 事件攔截邏輯,加上一個離線回退頁面(offline fallback page)。
安裝體驗怎麼設計才自然?
「加到桌面」的提示時機決定了安裝率的高低。 Chrome 的預設安裝提示(beforeinstallprompt)出現的時機通常不太理想——剛進網站就跳出來,用戶還不知道你是誰,當然按取消。
比較好的做法是延遲觸發:
- 攔截
beforeinstallprompt事件,先不顯示 - 等用戶完成某個關鍵動作(例如第一次出價成功、追蹤第三件商品)
- 用自訂的 UI 呈現安裝邀請,說明安裝後的好處(「安裝到桌面,出價被超越時第一時間通知你」)
- 用戶點擊後才觸發原生的安裝流程
這個策略的安裝轉換率通常比直接彈預設提示高 3-5 倍。因為用戶已經體驗過你的平台、產生了興趣,這時候邀請安裝的接受度自然高很多。
效能優化:PWA 拍賣網站怎麼做到秒開?
Lighthouse 的 PWA 分數跟實際用戶體驗是兩回事,但它是很好的起點。 你的拍賣 PWA 至少要達到這些指標:
- LCP(最大內容繪製):< 2.5 秒(拍品圖片通常是 LCP 元素)
- FID(首次輸入延遲):< 100ms(出價按鈕的回應速度)
- CLS(累計版面位移):< 0.1(圖片載入不能讓價格跳位)
搭配 Core Web Vitals 優化的技巧,PWA 的 Service Worker 快取能讓回訪用戶的 LCP 降到 1 秒以內。預快取(precache)關鍵的 CSS、JS 和字型檔,用 runtime cache 處理拍品圖片,這樣即使在 3G 網路下也能有不錯的體驗。
如果你正在評估要不要從現有的拍賣網站升級到 PWA,或是從零開始打造一個 PWA 拍賣平台,找有相關經驗的網頁設計團隊合作會省不少摸索的時間。
常見問題
Q:PWA 在 iOS 上的支援度夠用嗎? 2026 年的答案是:夠用了。Apple 從 iOS 16.4 開始支援 Web Push 通知,iOS 17 進一步改善了 PWA 的全螢幕模式和 Service Worker 穩定性。唯一的限制是 iOS 的 PWA 儲存空間上限約 50MB,拍品圖片的快取策略要注意控制大小。
Q:PWA 跟原生 App 可以並存嗎? 完全可以。很多大型拍賣平台的策略是:先用 PWA 覆蓋 80% 的用戶需求,等規模到了再開發原生 App 給重度用戶。參考拍賣平台 App vs 網站的分析,這是目前性價比最高的漸進式策略。
Q:做了 PWA 還需要做 SEO 嗎? 當然需要。PWA 本質還是網站,所有的 SEO 優化策略都適用。而且 PWA 因為載入速度快、用戶體驗好,Google 的排名分數通常還會更高一些。
Q:Service Worker 更新後,用戶會不會一直看到舊版本?
這是 PWA 開發者的經典頭痛問題。建議用 skipWaiting() + clients.claim() 強制新版本立即生效,搭配一個「有新版本可用,點擊重新載入」的提示條,讓用戶知道要重新整理。