最近寫了個小程式,採用thinkphp
自己手動寫了產生靜態html模組,有後台批量手動產生。
後來發現,tp架構有靜態緩衝功能,也就是緩衝之後php通過路徑去讀取真實html檔案。
請問這兩走方法有哪些優點和缺點呢?
回複內容:
最近寫了個小程式,採用thinkphp
自己手動寫了產生靜態html模組,有後台批量手動產生。
後來發現,tp架構有靜態緩衝功能,也就是緩衝之後php通過路徑去讀取真實html檔案。
請問這兩走方法有哪些優點和缺點呢?
兩者有一個共同的目的,減少伺服器的高並發處理和資料庫負載的其中一個方法。
在國內呢,網站靜態化還有一個目的就是為了“投搜尋引擎所好”,從而能更好的SEO最佳化。(其實,我個人認為搜尋引擎對靜態或者動態網頁面並沒有特別區分與偏好。控制好頁面關鍵詞效果都一樣)。
你文中所描述的兩者儲存介質都是磁碟,前者“靜態化”,其實沒php什麼事了,只是在伺服器端這些檔案都是由php控制生產而已,使用者都是直接存取的靜態頁面。
而後者“文本緩衝”的可控性更高。可定義緩衝的到期時間,頁面的局部緩衝等等,從而更優的去控制內容更新等等。使用者最後訪問到的還是php動態網頁面,由php再去解釋該怎麼做,是直接讀取file檔案呢,還是緩衝已經到期需要再重建下。
如果是大一點的網站,頁面的大資料量對磁碟的消耗和維護也是很頭疼的。
另外
我沒有用過Thinkphp,但是按照我瞭解的一些php架構來看。基本上都會提供不少緩衝適配器的驅動。
可以替換成更優的方案,比如:
使用memcached(記憶體對象緩衝)。這其實與文本緩衝過程類似,只是儲存介質換成記憶體。讀取速度當然更快。
再比如Alternative PHP Cache、Xcache、eAccelerator等等,這類緩衝方案可以叫做php加速器。不同於上面所說的 檔案儲存體和memcached記憶體Object Storage Service。具體的可以看這裡哪種php加速器最靠譜APC,XCache,eAccelerator,文中的幾個外鏈可以點過去看看。其中有一篇介紹了他們的類似執行流程。
我推薦使用緩衝方案。 網站的靜態化處理個人感覺蠻“醜陋”的。
其實我後面說的緩衝,有點偏離你說的“tp架構有靜態緩衝功能”。你這裡說應用可能是tp提供的一個輸出緩衝也就是將整頁模式進行一個整塊檔案儲存體,它幫你做了更細緻的檔案產生控制,比如產生為html尾碼的檔案。你可以再細緻的看看tp的手冊,特別的看看緩衝的部分。
緩衝要好些.
1.緩衝是訪問即產生.
2.靜態是不論是否訪問, 都需要提前產生. 以後維護模版很難. 更新資料量很大的時候,要費很長時間.
緩衝是儲存在記憶體裡,靜態是儲存在硬碟裡的HTML檔案
速度來講,緩衝是比靜態要快的。
緩衝能更及時,至於哪個好,還是得看你伺服器的記憶體情況了,如果記憶體小,那還是要酌情考慮要放到緩衝裡。
不清楚thinkphp的緩衝具體實現,但是從你的描述,『PHP代碼讀取真實HTML檔案』效率上是有問題的。應該由webserver來處理這部分讀取,而不用PHP代碼參與
推薦Google一下x-sendfile