花褪殘紅青杏小。燕子飛時,綠水人家繞。

            小議緩存和靜態化暨關于Nobird_Cache緩存插件的一點說明

            ZBLOG教程 十五樓的鳥兒 32302瀏覽 1評論

            近期鳥兒博客發布了基于ZBLOGPHP版本的全站緩存插件,可以實現靜態化功能。由于有些站長還是新手,甚至是有些人從來沒接觸過網站,自然要問,緩存是什么? 靜態化又是什么? 有何優勢?Nobird_Cache插件相比其他緩存插件或靜態化插件的優勢又在哪里?本文將對此進行一一解答。

            一、先來說說規范化的頁面地址與SEO

            注意區別“規范化的頁面地址”與“靜態化”。

            很多人喜歡拿靜態化和SEO說事兒,經??吹骄W上能夠提出“靜態化有利于SEO,有利于搜索引擎收錄”這樣的觀點。

            這樣的觀點本身有些“問題”,這些問題想必不是第一個提出人的本意,但是后來卻被以訛傳訛了。這些問題的主要關鍵點在于偽靜態產生的規范化頁面地址,算不算靜態化地址?

            在早期的搜索引擎當中,由于對于動態頁面傳值處理的不好,比如 www.abc123.com/index.php?id=1&page=2&act=info 這樣的地址中,早期的搜索引擎是無法處理其中的1、2、info傳入的參數的,甚至直接拋棄了問號?以后的部分,所以為了投其所好,廣大SEOer開始提出了規范化頁面地址的需求,將上面的地址規范成類似這樣子:www.abc123.com/id_1/page_2/act_info.html。

            不可否認,規范化的地址對于搜索引擎的蜘蛛智商要求更低,更容易被抓取。Google曾經發文聲明,不建議使用偽靜態的地址,建議使用原生的動態地址,這樣更有利于Google的蜘蛛理解頁面展示的含義(由于眾所周知的原因Google無法訪問,有興趣可以自行翻墻查找原文)。但是Google的聲明也只能代表其自己的搜索引擎技術水平,不能夠代表國內搜索引擎的技術水平。

            另一方面,需要知道的是,規范化后的頁面地址很多情況下確實變短了,這對于瀏覽的訪客是有利的,畢竟長的地址不好記,復制出去也不好看。


            二、偽靜態、真靜態

            在還沒有偽靜態技術出現之前,更多的程序使用的是靜態化文件,比如Z-Blog 1.8 及之前的版本都是一些典型的例子,然而早期的靜態化文件不能很好的實時更新信息,靜態后的文件存放在主機上不會自動刷新,需要網站管理員定期手動進行批量刷新,也就是很多程序里的所謂“文件重建”的功能,如果不刷新靜態化文件,如果對網站的模板進行了修改,文章進行了變更,都會無法實時的更新到頁面上給瀏覽者進行查看,批量重建一次全站的靜態化文件是非常耗時的行為,用PHP或者其他頁面語言去處理靜態化,由于沒有真正意義上的多線程,平均速度非常慢,在服務器上一分鐘能創建500個靜態化文件都是奢望,更何況早期很多站長使用的是虛擬主機,基本上一個稍大的站點,點上重建按鈕,站長就可以去睡覺了,第二天早上起來能重建完一個分類就不錯。

            一切技術,其實都是為了省錢省時間而出現的。

            在偽靜態技術出現之后,更多的程序采取了偽靜態的方式進行規范化頁面地址的工作,這樣有兩個好處,一方面可以節省服務器磁盤空間,大量的靜態化文件占用磁盤也是非常驚人的,另一方面減少了站長的工作量,節省了非常多的刷新靜態化文件的工作。

            然而,隨著偽靜態技術的搭載,由于不是直接讀取靜態化文件,而是經過讀取數據庫,經過PHP處理,再發送頁面給用戶,導致服務器資源的耗費(CPU、內存)增加,當網站用戶訪問量比較大的時候,CPU反而成為了瓶頸,這時候,人們又想到了靜態化技術,因為靜態化后的實體html文件,在用戶訪問時,僅需要經過web服務器的一次判斷,然后把頁面內容輸出給用戶就行了,不需要經過PHP和MySQL的處理,大大的節省了服務器CPU和內存的耗費,節省開支。

            三、緩存

            緩存其實有非常多的形式,也有非常多的層面,遠不止Nobird_Cache插件目前的文件存儲緩存這么簡單。

            通常用戶訪問一個PHP MySQL類型的網站時,程序處理的“簡化”過程是這樣的:

            用戶瀏覽器 ->PHP->MYSQL 然后 MYSQL->PHP->用戶瀏覽器

            為了方便用戶理解,將更多更復雜的底層的進行簡化,僅保普通用戶留看得見摸得著的一些過程,在上述這些過程中,任意一個箭頭中的處理結果,進行保存,用于下一次同類型訪問不經過深入處理而直接展示給用戶的過程,稱之為“緩存”。

            緩存的目的:

            1、將低速存儲器上的內容,轉入到高速存儲器,下一次訪問時直接從高速存儲器獲取。

            2、將上一次數據庫查詢的結果進行存儲,下一次不需要查詢直接訪問。

            3、將上一次用戶訪問的頁面進行存儲,下一次不需要任何解析,直接給用戶(這也是Nobird_Cache緩存插件主要做的事情)。

            4、將上一次PHP編譯的結果進行存儲,下一次不經過編譯直接執行。

            ……更多緩存類型,有興趣請百度。

            四、孰優孰劣?

            這恐怕不是一句話兩句話,哪怕再來一篇本文的篇幅也是無法論證明白的,不同的網站架構,不同的處理形式,不同的服務器配置等都會影響每種技術方案的處理結果。

            簡單舉兩個例子:

            1、當你服務CPU和內存資源都不是問題的時候,如果有大量的靜態化資源并且訪問量也非常大的話,這時候你的服務器瓶頸在于硬盤的I/O速度,也就是說假設你硬盤讀取速度100MB/s,每個頁面有1M大小,100個頁面,每秒都有不止一個人去完全刷新,這時候你的硬盤供應不起這么高的讀取速度,就會導致服務器性能下降,這時候你需要考慮的是更換更快的固態硬盤SSD,或者采取更快的緩存方式如內存緩存:將緩存的某個中間體存入內存,下一次同類型訪問直接從內存讀取。

            2、如果你的CPU和內存資源中規中矩,服務器優化水平也一般般,這時候稍微大的訪問量對你來說可能就CPU爆棚,或者內存占滿,這件事兒在很多小型的程序上普遍存在,甚至有些程序你對著單一頁面按住F5不放,服務器CPU就可以彪到100%----不是危言聳聽,試試自己的?

            這時候你需要的是文件緩存,它可以讓用戶刷新的不再是動態頁面,而是靜態頁面,不經過PHP和MySQL進行處理,大幅度減少CPU和內存的占用

            至于更大的訪問量,更復雜的服務器關系,需要更復雜的技術,比如:數據庫分庫,分表,動靜分離,CDN,多個服務器均衡負載是大型網站常用的技術,這并不罕見,ZBLOG也有很多CDN類型的插件,比如云存儲,這類插件在節省小型網站帶寬的同時也節省了服務I/O的開支,只是你的最初目的不在于此罷了。

            五、關于Nobird_Cache插件

            看了上這一大堆,終于說到這個插件了。

            這個插件使用的是文件緩存的形式,配合服務器的mod_rewrite模塊等可以實現靜態化展示。

            剛剛我們也說了,靜態文件后主要缺點有幾個,一是無法實時進行更新,但是Nobird_Cache插件設計的時候考慮了這一點,可以在很多觸發條件下更新對應的文件。

            小議緩存和靜態化暨關于Nobird Cache緩存插件的一點說明  ZBLOG教程  第1張

            當用戶選擇了合適的觸發條件,并且條件被觸發時,舊的靜態化文件會被刪除,以實現實時更新的效果。

            在交互性比較強的網站中,靜態化的另一個問題是,當用戶評論、留言、登錄之后,靜態化的文件不能實時的展示結果,在Nobird_Cache插件中,提供了兩個開關,可以對已經留言或者已經登錄的用戶直接展示動態頁面,畢竟這部分用戶在Blog程序中是小部分,影響比較小。

            小議緩存和靜態化暨關于Nobird Cache緩存插件的一點說明  ZBLOG教程  第2張

            在ZBlog中,有些用戶使用的不是自適應主題,或者擁有手機站和PC站點兩個主題的用戶,在Nobird_Cache插件中,針對這部分用戶設計了一個功能開關,當打開這個開關后,插件會根據訪客身份提供兩種不同的緩存文件。

            小議緩存和靜態化暨關于Nobird Cache緩存插件的一點說明  ZBLOG教程  第3張

            有些人使用緩存插件或者靜態化插件時,擔心不能實時更新,對搜索引擎造成影響,或者有些頁面由于訪客非常少不需要建立緩存,或者單純的需要實時輸出動態結果,Nobird_Cache設置了兩個排除功能開關,可以針對指定訪客UA和指定路徑不展示緩存或者不緩存。

            小議緩存和靜態化暨關于Nobird Cache緩存插件的一點說明  ZBLOG教程  第4張




            在Nobird_Cache中“靜態化模式”與普通緩存的區別在于:

            1、靜態化模式儲存的文件在cache目錄中的結構對應正常的頁面結構進行存儲,文件名統一index.html。緩存模式使用頁面URI的MD5值進行存儲,擴展名dat(PC端緩存)或者mdat(手機端緩存)

            2、靜態化模式應對用戶訪問時通過服務器的mod_rewrite模塊,直接將html文件推送給用戶。緩存模式應對用戶訪問時,通過PHP處理頁面URI的MD5值,然后經過PHP讀取dat或者mdat格式的文件,再傳輸給用戶。

            簡單的說,Nobird_Cache插件中靜態化模式不需要經過PHP處理,而緩存模式需要經過PHP處理。當緩存完成后,二者都不需要查詢數據庫。

            轉載請注明:鳥兒網絡 ? 小議緩存和靜態化暨關于Nobird_Cache緩存插件的一點說明

            游客
            發表我的評論 換個身份
            取消評論

            Hi,您需要填寫昵稱和郵箱!

            • 昵稱 (必填)
            • 郵箱 (必填)
            • 網址

            網友最新評論 (1)

            1. 訪客
              只能獻上我的膝蓋了....
              天興工作室 7年前 (2015-09-14)回復

            等待大佬打賞中~

            久久久精品2019免费观看,国产精品岛国久久久久,手机看片av免费看大片,好爽好紧好大的免费视频国产,免费黄色视频在线观看 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>