特殊事件處理篇

將較少變動的網頁資料強迫增加快取的方式

鳥站閱讀總很慢,原來是字型檔太大所致。如果使用快取,結果看起來應該會比較好!

最近更新時間: 2020/08/31

問題發生的狀況說明

在 2019 年暑假開始的樣子,鳥哥開始轉換自己的網站,變成了強迫 https 而且也修訂了字型檔案,這樣,不同的裝置, 查閱相同的網頁時『可能』會得到比較好的顯示效果。就這樣網站運作了一些時刻。

不過,近期以來,很多的讀者開始來信,說網站怎麼這麼慢!一開始鳥哥以為是伺服器出問題!後來漸漸發現,大多詢問這些問題的夥伴, 連線到我 server 的網路頻寬都不高,看起來就是頻寬都被字型檔案佔據了!連鳥哥自己上課時,也都會發現,自己的網站顯示有點頓, 連在台灣都這麼頓了,那在其他來源的朋友,會很頓,這也是應該的...

想說,不想要修改原有的設計了,因為我太懶~加上最近被環工模式搞到頭很痛...於是,就開始幻想,有沒有什麼可以增加快取時間的方法? 以 web font cache 之類的方式去 google,結果找到不少篇談到『 Cache control 』的方式,但是都沒有仔細講說這個東西怎麼用? 後來查到這一篇:

該篇文章講的超級仔細!可以從 http server 著手去處理!在每個 webpage 的 header 處,主動填上需要的資料,讓瀏覽器去判斷有沒有 cache 了。 當然,這也是標準的協定語法,倒不是強迫用戶端瀏覽器做啥怪事。設定上就顯的非常簡單啊!這樣做即可:

[root@www ~]# vim /var/www/html/somewhere/.htaccess
<filesMatch ".(otf|ttf)$">
        Header set Cache-Control "max-age=604800, public"
</filesMatch>

Cache-Control 就是主要的設定,而參數內的 max-age 指的就是要快取到瀏覽器多久時間,單位是秒。鳥哥上面將檔案放置了 1 周, 好像有點短...你可以依據你的環境需求來處理。鳥哥也僅針對 .otf, .ttf 這種字型檔案做快取設計,其他的網頁元件就沒有被指定快取了。 而那個 public (公開),指的是所有中間界面的伺服器,也就是所謂的 CDN 環境,也是直接進行快取。如果指定為 private 的話, 那就是只有終端用戶才會快取的意思。

總之,剛剛加上這設定之後,立刻來查詢一下系統,就可以很快速的展示網頁了!也就是說,未來當字型檔案過了快取期限, 只要等待第一個網頁重新載入,那麼這些字型檔就會被快取,接下來的所有網站內的文件,就能順利展示,而不會持續下載字型檔囉!

鳥哥自己的感覺是,覺得很快啊!哈哈哈!另外,除了修改 .htaccess 之外,事實上,你也可以透過 PHP 的功能來處理! 畢竟不是所有人都可以自由的設計自己的 .htaccess,也不是所有的人都使用相同的模組的。如果有需要,文末的參考資料也能看看, 透過簡單的 PHP 語法,也可以針對不同的副檔名來設計快取的時間喔!

伺服器篇文件
各版本彙整說明
CentOS 6.x