Drupal的Boost Cache是個好東西,可以實現将匿名用戶訪問的内容完全靜态化緩存起來,繞過PHP和MySQL,隻需要Apache就可以對付用戶的浏覽,可以極大提升網站性能。Boost模塊的配置也比較靈活、複雜,可以設置排除某些種類的頁面不緩存、可以設置更新周期及辦法等等。今年我們用Drupal搭建的網站多數都是數據量大、更新不是很頻繁的内容,基本上都使用了Boost。
不過偶爾有網友發來郵件,要求我們删除或者更新某個頁面内容,如果隻是删除某個頁面的話,包含這個頁面信息的分類頁、Views頁面可能都因為有Boost緩存而無法自動清除。還有我們自己在調試、修改網站的時候也需要更新一部分頁面緩存以便驗證效果。
以往解決的辦法有兩種:
- 一是SSH登錄到服務器,進入相應的cache目錄删除對應的緩存html和html.gz文件,這個缺點是還比較麻煩,對于頻繁測試來說更不方便;
- 二是在管理員菜單的Performance-Boost裡面全部刷新所有的緩存内容,這個缺點是刷新了本來不需要刷新的緩存,對于大數據量網站來說不可取。
以前也曾在網上找辦法都沒有找到,今天又花了一些時間找,其實這個功能Boost插件本身就已經帶有了,隻是默認沒有顯示出來而已。下面介紹設置的步驟:
- 用管理員帳号登錄需要清除某個頁面的網站;
- 在管理員菜單中進入區塊列表(block);
- 将默認禁用的Boost: Pages cache status這個block放到上面來,例如放到左邊欄的靠下位置,保存block設置;
- 再進入需要更新的頁面,可以看到左邊欄有顯示:Expire In: 10 小時 4 分鐘、Cache Generated: 4.13 seconds,這表示緩存内容10小時4分鐘後過期,Cache産生耗時4.13秒,并帶有一個“Flush Page”按鈕;
- 隻需要點擊下面的“Flush Page”按鈕就會更新當前頁面;
- 點擊按鈕後左邊欄顯示變成了:This page is being served live to anonymous visitors, as it is not currently in the static page cache.也就是說這時用匿名方式再去訪問這個頁面就是看到的最新内容,因為已經不在靜态頁面緩存中了;
- 再改用匿名方式浏覽這個頁面,應該就是更新後的内容,打開頁面HTML源代碼會發現底部沒有了“Page cached by Boost”的字樣,如果再次刷新訪問這個頁面,打開頁面HTML源代碼就會發現底部又有了帶新的時間标記的“Page cached by Boost”字樣,表示緩存剛剛生成了新的。
我已經測試過,使用上面的辦法可以清除某個單獨node頁面或者單獨taxonomy的緩存。
完成了清除某個頁面之後,那個block列表裡面的Boost: Pages cache status設置就放在上面也行,以後可能還要flush其他頁面,不用移動下來了。反正匿名用戶也看不到,隻有管理員可以看到。
评论