在《Drupal網站接入CDN》和《MediaWiki網站接入CDN》中,為了讓Cloudflare和百度雲加速緩存html頁面,都是修改了header中的Cache Control:
- Drupal站:在html.tpl.php中添加header("Cache-Control: public, max-age=7200, s-maxage=3600");
- MediaWiki站:修改includes/OutputPage.php中的$response->header("Cache-Control: private, must-revalidate, max-age=0");
而現在我們發現一些json數據或者api調用的時候并沒有被百度雲加速緩存,這些json數據和api調用并沒有通過html.tpl.php和OutputPage.php,所以上面的設置辦法無效。Cloudflare沒有這個問題,依然可以緩存json數據或者api調用内容,隻有百度雲加速有這個問題。
我先嘗試了在百度雲加速中添加頁面規則、修改Apache Conf文件設置Header Cache Control、修改Drupal Views頁面header的php代碼,都沒有解決。今天和同事再一起嘗試,終于是找到了解決辦法:
- Drupal網站修改settings.php,添加drupal_add_http_header('Cache-Control', 'public, max-age=86400'); 這樣設置後對html.tpl.php中的設置也可以去掉了,因為settings.php中的設置涵蓋了html和json頁面的輸出
- MediaWiki網站修改/includes/api/ApiMain.php中的$privateCache = 'private, must-revalidate, max-age=' . $maxage;這句,改為$privateCache = 'public, max-age=86400';,這樣/api.php開頭的路徑就都可以緩存了
再就是自己寫的一些api調用php程序,有些也需要進行響應的header("Cache-Control...")設置,才能讓緩存生效。
评论