您在這裡

讓CDN緩存json等API數據

James Qi 在 2022年9月19日 - 17:45 發表

在《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調用内容,隻有百度雲加速有這個問題。

json緩存CDN

我先嘗試了在百度雲加速中添加頁面規則、修改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...")設置,才能讓緩存生效。

 

 

自由标簽:

發表新回應

Plain text

  • 不允許使用 HTML 標籤。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。