論生成靜態和Http快取優劣勢

2022-02-24 06:11:11 字數 1647 閱讀 1001

在大型web架構的承載能力瓶頸往往在資料庫這裡,最難的就是對資料庫的優化,在資料庫層面可以採用加索引,分庫,分表,主從複製等等都是為了減少資料庫壓力,那麼在程式層面主要兩種方式來解決這個問題,就是生成靜態和後端http cache 快取,當然也有資料表快取,不過這個不是本章討論重點,下面就生成靜態和後端http cache做乙個比較。

生成靜態

是在新內容發布的同時就立刻生成相應內容的靜態頁面,比如:2023年3月22日,管理員通過後台內容管理介面錄入一篇文章後,就立刻生成/tech/2003/03/22/001.html這個靜態頁面,並同步更新相關索引頁上的鏈結。

生成靜態的技術主要兩種:

1、模板替換技術,通過把靜態html中的標籤通過正則替換為後台輸出資料,然後另存為html檔案。

2、訪問時動態生成,比如訪問/tech/2003/03/22/001.html這個檔案,對應動態位址是:?table=tech&id=1,那麼在沒有靜態檔案情況下可以先訪問?table=tech&id=1,然後再訪問同時來生成/tech/2003/03/22/001.html,第二次訪問時候由於已經生成了靜態,直接訪問靜態頁面即可,這個可以在表中增加乙個字段(如:ishtml)來儲存是否生成靜態,前端根據這個欄位來決定輸出url位址型別。

是在新內容發布以後,並不生成相應的靜態頁面,直到對相應內容發出請求時,如果瀏覽器中找不到相應快取,就向後台內容管理伺服器發出請求,這時伺服器端有兩種情況

1、如果後端的http cache有當前頁面的快取,而且沒有過期,那麼會直接從httpcache中輸出並在瀏覽器顯示。

2、如果後端的http

cache沒有當前頁面的快取,那麼頁面就會和普通動態頁面一樣,請求資料庫,載入後端指令碼,然後輸出瀏覽器,輸出同時會把當前頁面加入到http

cache中,下面我專案中用到的乙個http快取過濾器,用的是net mvc的過濾器實現,**如下:

cache.varybyheaders["host"] = true;//網域名稱不同時採用快取不同

"customname"); //自定義快取,在global.aspx中重寫getvarybycustomstring

timespan cacheduration = timespan.fromseconds(duration);//單位秒

靜態快取的缺點

生成靜態必須人工干預:比如首頁呼叫文章,欄目也呼叫了文章,專題頁也呼叫了文章,那麼在第一次更新靜態的時候,首頁、欄目、專題頁也要同步更新,這種我暫時沒有什麼好的辦法判斷到底哪些頁面呼叫這篇文章,所以我的解決辦法就是:後台手工生成,而http cache只需要清理快取或增加自動過期時間即可解決。

Angular和React使用優劣勢總結

一 angular 優點 1 文件齊全,各種api功能都有介紹。2 框架功能完整,資料互動httpclient,路由管理 angular router,資料管理有rxjs,表單有 angular forms,且自帶xss保護。3 模組化管理,結構清晰,並提供單元測試工具。4 模板功能強大,自帶各種指...

盤點SEO和SEM的優劣勢

如果你不知如何分配你的搜尋營銷預算,或是和客戶提案的時候不知道怎麼樣去解釋搜尋營銷產品 seo和sem 的區別,又或者不了解 企業在當前階段應該優先施行哪種搜尋營銷策略,本文可以幫助你深入了解seo和sem之間的區別和優劣勢。優勢 提公升流量無須增加預算 要提公升ppc的流量,你必須提公升預算。但s...

微信小程式和APP優劣勢大對比

小程式的優勢 2.功能豐富,體驗更簡便 3.介面眾多,可以進行不斷的開發 1.開發成本低 2.開發門檻低 4.開發周期更短,節省開發成本 使用者 減輕記憶體,用完即可關閉,不占用空間 商戶 線上線下結合,實現網際網路的轉型 小程式的好處 1 自帶推廣 2 觸手可及,用完即走 3 搜尋 4 小程式碼 ...