從wordpress-cache外掛看web靜態HTML生成的策略
1 第一次訪問,檢查該檔案是否存在,如果沒有快取,從資料庫中取出檔案放到快取裡面,以後訪問,就直接從快取裡面取。每一個靜態頁面都需要一個輔助的meta檔案,例如wp-cache-12345.meta
為什麼需要獨立的meta?因為返回一個靜態html還不夠,還有很多資訊,例如還需要這個頁面的時間,content-type等資訊。這些資訊又不能存放在html中,所以需要輔助的.meta檔案
meta檔案中的內容是:
$meta_object->uri = $_SERVER['REQUEST_URI'];
$meta_object->post = wp_cache_post_id();
$meta_object->dynamic = true;
$meta_object->headers = array();
array_push($meta_object->headers, "Last-Modified: $value");
array_push($meta_object->headers, "Content-Type: $value");
2 如果某篇文章修改了,刪除這篇文章的快取,如果某個blog換主題了,刪除整個blog的快取。以後按照1的邏輯來。
wp-cache-phase1 檢查某頁面是否存在,如果存在直接去快取。否則進入wp-cache-phase2,訪問動態頁面,生成快取檔案
其中用到
ob_start('wp_cache_ob_callback');
register_shutdown_function('wp_cache_ob_end');
wp_cache_ob_callback wp_cache_ob_end
wp-cache-phase2還有個作用是響應頁面的事件,例如publish_post edit_post delete_post publish_phone trackback_post pingback_post comment_post edit_comment wp_set_comment_status delete_comment switch_theme,不管什麼事件,本質就是將快取裡面的頁清空
採用這種外掛形式需要修改的地方
1 cache: 需要有一個include檔案,根據URL,統一判斷所有的訪問
2 事件響應:
由於硬碟檔案系統,同一目錄下的檔案數超過3000個,訪問就會比較慢
所以快取檔案在硬碟上的結構:需要增加目錄,這樣可以提升索引速度,而且刪除時候也比較方便
可以按照使用者,分類,日期或其他屬性建立目錄
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=816096
相關文章
- 【Hover】ASP.Net生成靜態HTML頁!ASP.NETHTML
- 從《王國紀元》看生態玩法:外掛、託與問題
- 用XML和XSLT來生成靜態的HTML頁面XMLHTML
- 靜態庫生成
- 前端web:瀏覽器靜態資源快取策略前端Web瀏覽器快取
- 從HTML Components的衰落看Web Components的危機HTMLWeb
- 輕量化web組態編輯器外掛Web
- 一個能夠讓你快速從html結構生成css結構的vscode外掛HTMLCSSVSCode
- 常用web外掛Web
- 不用模板只用ASP+FSO生成靜態HTML頁的一個方法(轉)HTML
- 鴻蒙開發Hvigor外掛動態生成程式碼鴻蒙Go
- 從零開始寫Java Web框架——maven 外掛JavaWeb框架Maven
- php生成靜態檔案PHP
- php 生成靜態頁面PHP
- PHP生成靜態頁面PHP
- Web前端常用外掛Web前端
- 谷歌外掛 HTML-to-Markdown谷歌HTML
- cmake:生成靜態庫和動態庫
- Web靜態資源加速Web
- HTML也可以靜態編譯?HTML編譯
- Hummingbird - WordPress快取、靜態資源合併、加速外掛快取
- 利用hugo生成靜態站點Go
- Linux 靜態庫生成指南Linux
- JSP生成靜態HTML頁面的實踐方法和設計思路薦JSHTML
- JavaScript動態生成html元素JavaScriptHTML
- 一個根據程式碼自動生成UML的外掛,助你看原始碼事半功倍原始碼
- vim外掛的安裝方式 -- vim註釋外掛和doxygen函式註釋生成外掛-ctrlp外掛-tabular等號對齊 外掛...函式
- Vssue - 又一個用 Issue 給靜態頁面做評論的外掛
- Maven外掛生成myBatis逆向工程MavenMyBatis
- 程式碼自動生成外掛:
- linux靜態庫的生成與使用(轉)Linux
- Asp.net實現靜態頁-新增新聞生成靜態頁ASP.NET
- Apache偽靜態html(URLRewrite)設定法ApacheHTML
- 關於php生成靜態問題PHP
- Linux 靜態庫生成及呼叫Linux
- Linux下靜態庫生成指南Linux
- ZBlogPHP怎麼生成偽靜態?PHP
- Pro Motion Blur Mac(動態模外掛fcpx外掛)Mac