Drupal網站對數據庫服務器的壓力由來已久,特别是Views做成的頁面是最可能導緻負載升高的原因,無論是以前自己服務器上的MySQL還是換用阿裡雲的RDS。
以前也采取一些緩存的措施來降低負載,但偶爾會出現一些問題,我翻看以前的博客中記錄有《Drupal網站Views生成頁面Title改為變量的問題》、《一個Drupal網站Views消失的排查》。
後來Drupal 6升級Drupal 7後似乎有些變化,但我一直也沒有深究,基本上都是把Views的查詢緩存設置為6天,把顯示緩存設置為0,在系列網站的xxx.views_default.inc文件中也是這樣設置。
前一段時間因為數據庫服務器負載經常升高導緻Views頁面報錯或者Views Block出現空白,我把查詢緩存設置從6天改為1天,希望出現錯誤後不會緩存錯誤達6天,最多1天後會更新。但實際效果并不好,還可能因為6天改為1天後數據庫服務器的負載更高。
今天幹脆較真試驗,把我的博客以及另外一個系列網站拿來做試驗,帶有PHP語句Header的Views的緩存設置為查詢緩存和顯示緩存都是6天,再用匿名用戶訪問多種語言的頁面,看Header中PHP設置的meta Keywords、Description、Title都是正常的,那就說明這兩種緩存都可以設置為6天(補充:第一次執行PHP是正常的,但刷新後隻緩存了$output,并不會再次執行其中設置meta Keywords、Description、Title的PHP代碼!所以這種情況下Rendered output緩存是不合适啟用的)。
如果還有Views生成的Block,也可以把區塊緩存設置為“為所有東西緩存一次”,但也要測試一下,看各種情況下浏覽的結果是否與預期一緻。
如果是添加了自定義模塊的系列網站,Views一般都是放置在模塊目錄中的一個文件,例如:sites/all/my_module/my_module.views_default.inc ,可以直接修改這個文件:
然後用drush cc all命令批量清理網站緩存,就可以生效了。
這個辦法理論是可以利用緩存來降低數據庫服務器負載的,實際上是否可行、有多大的效果?還有待觀察,我也會觀察後繼續記錄在下面。
评论