母版頁機制與使用流程
建立步驟
- 新增 Web Form 母版頁 (
.master)
- 新增 使用母版頁的內容頁 (
.aspx,勾選 "Select master page")
- 母版頁使用
<asp:ContentPlaceHolder> 定義可替換區塊
- 內容頁使用
<asp:Content> 填充對應區塊
運作原理
伺服器端將母版頁與內容頁組合渲染,產生完整 HTML 回應瀏覽器。瀏覽器完全感知不到母版頁存在。
母版頁局限性
| 問題 | 說明 |
| 執行階段成本 | 每次請求需解析組合頁面結構 |
| 控制項樹複雜度 | 巢狀母版頁導致控制項 ID 複雜、FindControl 困難 |
| 設計時體驗 | Visual Studio 設計介面渲染較慢 |
| 靈活度限制 | 難以實現跨區塊的動態組合邏輯 |
SSI (Server Side Includes) - 輕量級替代方案
核心特性
- Web 伺服器原生支援:IIS、Apache、Nginx 皆支援
- 繞過 ASP.NET 管線:直接由 IIS 處理,不經 Managed Pipeline
- 極高效能:單純檔案內容插入,無編譯、無物件建構
- 語法簡單:HTML 註釋指令格式
實作範例
共用區塊檔案
<!-- head.html -->
<head>
<meta charset="utf-8" />
<title>共用標題區</title>
<link rel="stylesheet" href="/css/common.css" />
</head>
<!-- foot.html -->
<footer>
© 2024 公司名稱 版權所有
<script src="/js/common.js"></script>
</footer>
主頁面 (test.shtml)
<!DOCTYPE html>
<html>
<!--#include file="head.html"-->
<body>
<h1>這裡放置自定義內容</h1>
<p>頁面主體內容...</p>
<!--#include file="foot.html"-->
</body>
</html>
技術對比總覽
| 維度 | 母版頁 (.master) | SSI (.shtml) |
| 處理層級 | ASP.NET Managed Pipeline | IIS Native Module |
| 執行效能 | 中等(需編譯組合) | 極高(單純字串插入) |
| 動態能力 | 完整伺服器端邏輯 | 靜態內容插入為主 |
| 開發工具支援 | Visual Studio 完整支援 | 需手動管理、無設計器 |
| 部署需求 | ASP.NET 執行環境 | 啟用 SSI 模組即可 |
| 檔案副檔名 | .master / .aspx | .shtml / .shtm |
適用場景建議
選擇母版頁當:
- 需要複雜伺服器端邏輯(資料綁定、使用者控制項、事件處理)
- 頁面結構高度固定,內容區塊明確
- 團隊習慣 Visual Studio 設計器開發
- ASP.NET Web Forms 專案
選擇 SSI 當:
- 大量靜態/半靜態頁面(官網、部落格、文件站)
- 極致效能需求,避免 ASP.NET 管線開銷
- 前後端分離架構,後端僅提供 API
- 跨技術棧共用版型(PHP、Node.js、靜態站點生成器)
現代架構下的演進
現代 Web 開發中,頁面組合策略已演進:
- CSR (Client-Side Rendering):React/Vue 元件組合
- SSR (Server-Side Rendering):Next.js/Nuxt.js 預渲染
- SSG (Static Site Generation):建置時期產生靜態頁
- Edge Side Includes (ESI):CDN 層級片段快取組合
理解母版頁與 SSI 的權衡,有助於在維護舊系統或選擇適合技術棧時做出明智決策。對於新專案,建議評估現代前端框架或 SSG 方案。
- 上一篇文章: ASP.NET Application 全域物件使用指南與效能陷阱避坑
- 下一篇文章: ADO.NET 實戰:存儲過程操作資料庫完整範例與資料庫腳本
Copyright ©
程式碼之家 All Rights Reserved