頁面輸出緩存的原理
系統(tǒng)處理客戶端的請求時(shí),先看看有沒有相應(yīng)的頁面輸出緩存,如果有緩存且沒有過期,就直接讀取緩存并返回頁面 HTML 代碼給客戶端;如果沒有緩存,或緩存已經(jīng)過期,則執(zhí)行完整的頁面解析過程,返回頁面 HTML 代碼給客戶端,并將頁面 HTML 代碼保存到緩存中,這樣下次再處理同樣的請求時(shí)就直接從緩存讀取并返回給客戶端了。
這一原理和數(shù)據(jù)緩存非常類似。事實(shí)上,我們可以將頁面輸出緩存理解成一種特殊的數(shù)據(jù)緩存。
頁面輸出緩存和數(shù)據(jù)緩存的主要區(qū)別
- 數(shù)據(jù)格式差異
- 頁面輸出緩存,緩存的是整個(gè)解析后的頁面 HTML 代碼;而數(shù)據(jù)緩存,一般緩存的是頁面中要調(diào)用的各個(gè)對象(比如各種 參數(shù)配置、所有站點(diǎn)信息、所有節(jié)點(diǎn)信息、所有權(quán)限數(shù)據(jù)等)。
- 存儲(chǔ)位置差異
- 在我們系統(tǒng)中,頁面輸出緩存是以緩存文件方式保存在硬盤中的,類似于生成 HTML 功能的 HTML 文件;數(shù)據(jù)緩存一般是保存在內(nèi)存中的,或者使用分布式緩存系統(tǒng)來保存。
- 數(shù)據(jù)量差異
- 頁面輸出緩存的數(shù)量非常非常多,假如我們有50萬篇文章、10萬個(gè)節(jié)點(diǎn)列表及分頁,要為 PC/手機(jī)/PAD 三種設(shè)備緩存,則會(huì)有超過(50+10)X3=180萬個(gè)頁面輸出緩存文件;而數(shù)據(jù)緩存的數(shù)量一般在幾百個(gè)即可,相對于頁面輸出緩存來說,少得多。
功能特性
- 緩存策略
-
支持針對不同頁面配置不同的緩存策略和緩存失效策略。
- 攻擊防護(hù)
-
系統(tǒng)針對緩存穿透、緩存雪崩、緩存擊穿等情況都做了防范。
系統(tǒng)能夠防護(hù)各種潛在的緩存攻擊行為,如窮舉訪問不存在的頁面等。
- 手工清理緩存
-
支持手動(dòng)清理站點(diǎn)首頁緩存、所有節(jié)點(diǎn)緩存、所有內(nèi)容緩存、全站頁面緩存以及未發(fā)布內(nèi)容的頁面緩存。
支持在站點(diǎn)管理、節(jié)點(diǎn)管理、內(nèi)容采編發(fā)中分別清理指定的站點(diǎn)、節(jié)點(diǎn)、內(nèi)容的頁面輸出緩存。
- 自動(dòng)按需清理緩存
-
在執(zhí)行添加、修改、刪除、審核通過、取消審核、發(fā)布、取消發(fā)布、移動(dòng)等操作時(shí),系統(tǒng)會(huì)自動(dòng)清理對應(yīng)頁面的緩存文件,包括內(nèi)容頁、列表頁和站點(diǎn)首頁等。
當(dāng)在節(jié)點(diǎn)A的模板中調(diào)用了跨上下級關(guān)系的節(jié)點(diǎn) B 的內(nèi)容時(shí),系統(tǒng)會(huì)自動(dòng)識別并維護(hù)節(jié)點(diǎn)間的關(guān)聯(lián)關(guān)系。因此,在節(jié)點(diǎn) B 進(jìn)行添加、審核、發(fā)布等操作時(shí),不僅會(huì)自動(dòng)清理節(jié)點(diǎn)B的頁面緩存,還會(huì)同步清理節(jié)點(diǎn) A 的頁面緩存,避免因遺漏清理導(dǎo)致節(jié)點(diǎn) A 的列表頁面無法及時(shí)更新。
當(dāng)模板文件發(fā)生改變時(shí)自動(dòng)清理調(diào)用了此模板的相關(guān)頁面的頁面輸出緩存。
- 主動(dòng)更新頁面輸出緩存
-
在清理緩存的時(shí),系統(tǒng)會(huì)創(chuàng)建更新緩存的任務(wù)及其詳細(xì)信息。讓另外部署的緩存更新工具來訪問后臺(tái)服務(wù)器,從而及時(shí)將相應(yīng)的頁面創(chuàng)建好頁面輸出緩存,這樣就與生成 HTML 的機(jī)制類似,從而極大提高整個(gè)系統(tǒng)的負(fù)載能力。此外,系統(tǒng)支持生成任務(wù)的優(yōu)先級控制,以便在不同應(yīng)用場景中靈活處理 HTML 生成的優(yōu)先次序。系統(tǒng)還支持對任務(wù)及其詳細(xì)信息進(jìn)行排重處理,以減少對服務(wù)器資源的無效消耗。
- 數(shù)據(jù)庫共享緩存
-
在多服務(wù)器負(fù)載均衡的部署環(huán)境中,各服務(wù)器可以通過數(shù)據(jù)庫共享緩存數(shù)據(jù)。一旦其中一臺(tái)服務(wù)器生成了緩存,其余服務(wù)器能夠直接從數(shù)據(jù)庫中獲取共享的緩存,并將其轉(zhuǎn)化為本地文件緩存,從而避免重新執(zhí)行完整的頁面解析過程。這種方法大大提高了整個(gè)系統(tǒng)的負(fù)載能力。
- 多服務(wù)器同步清理
-
在分布式部署環(huán)境中,支持通過消息隊(duì)列讓所有服務(wù)器同步清理頁面輸出緩存。
- 查看清理任務(wù)
-
支持在后臺(tái)查看更新緩存任務(wù)及任務(wù)進(jìn)度。
用戶登錄
還沒有賬號?
立即注冊