服务器里的文件怎么实时更新,简单几步,利用Serverless,让COS中文件变更自动刷新CDN...
背景
這幾天遇到這樣的一個場景,相信也是大多數的站長會遇到的一個問題:
自己的一個個人站點使用了COS作為前端靜態資源的存儲(JS、CSS、圖片等等),同時開啟了CDN作為資源的加速分發,為了最大的達到加速效果,把這些資源的緩存時間設置30天及以上。某一天,自己的站點需要變更一下css樣式,修改完之后扔到COS中,發現站點中的樣式仍沒有生效。最后想起是命中了CDN的緩存,因此需要到 CDN控制臺 進行URL刷新。
現狀
目前COS(對象存儲)控制臺是沒有提供這樣一個功能:當啟用了CDN,COS中
分析
世界是由懶人創造的。
上面提到的刷新的工作,一次還好,但每次更新站點的靜態文件都需要去執行這樣的操作,這樣重復性的功能是一定要得到解決的,誰讓我懶…
想了下,COS文件變更的場景分為 2 種:
API上傳GUI上傳(控制臺、COS Browser…)
要實現自動刷新CDN,則需要用到CDN的 刷新URL的API 。
API上傳
如果你是在代碼里去上傳靜態資源的,那么你是能夠知道文件上傳的時刻的,在文件傳完后去調用CDN的API則完成工作。
但是,如果你也同時通過COS控制臺來上傳文件,那這樣的場景則覆蓋不了,因此這種做法并不全面。在此也不做多的描述了。
GUI上傳
首先,會遇到一個難題,COS本身沒有提供設置文件更變之后的回調的功能,如果能拿到這個的回調,則不管是通過什么方式的上傳,均能被覆蓋到。
既然寫了這篇東西,也不賣關子了,直接介紹下我們的主角:SCF(無服務器云函數),
下面我們就一步步來實現我們要的功能:
1、去 SCF控制臺 創建函數
注意: 地域需要選擇與COS中存放靜態資源的Bucket同個地域的,這里以我廣州的 Bucket 為例,創建廣州的函數
image_1ccfkdc6jp0uif0o1pmhti79.png
起個名字叫 cdn_refresh, 環境的話,我選擇 Nodejs(這里推薦大家選 Nodejs 就行,因為我的這段demo是用的node,你需要使用的話,不懂node也沒關系,改一下配置就行)
image_1ccfkj8gsc2o5fg6jdbmv98nm.png
2、修改 demo 配置
下載我這個 demo的代碼,解壓后修改里面的幾個配置信息,包括secretId、secretKey、以及你的cdn域名
把寫好的代碼壓縮成 zip 包,通過本地上傳 zip 包選項傳上去,執行方法不用修改
image_1ccfl3ds1mjafae2mi8oqd161g.png
3、添加觸發方式,完成創建
選擇 COS 觸發,Bucket選擇靜態資源存儲的bucket,事件類型我們選擇文件上傳,點擊保存,完成函數創建
image_1ccfl90dp1502on76371v6jsa1t.png
4、再次添加文件刪除的觸發方式,完成配置
上面我們支持了文件上傳的觸發方式,這里再添加上文件刪除的觸發,這樣才是完整的文件變更
https://www.fwqwd.com/wp-content/uploads/2020/11/20201105175908-67.png
https://www.fwqwd.com/wp-content/uploads/2020/11/20201105175909-50.png
測試效果
以上,我們就完成了 SCF 側函數的配置,那下面我們直接看效果就行
我在控制臺上傳了文件 nba.jpg
image_1ccflpknt1st2r01dv3cq11mqd3k.png
我們在 SCF 控制臺能看到調用相關的日志
image_1ccfltj6q15ft1iim17hmfacihe41.png
最后,因為 CDN刷新是異步刷新,我們可以去 CDN控制臺 查看刷新記錄
image_1ccfm0fu81c4a8o33es9ha1per4e.png
結語
至此,我們就完成了 COS 文件中變更到自動刷新 CDN 的流程。
最后再附上這個demo的下載地址:https://galenye-1251496585.cos.ap-guangzhou.myqcloud.com/scf_about_cdn_refresh.zip
注明:本文來自投稿,不代表服務器文檔網立場,如若轉載,請注明出處:https://www.fwqwd.com/13947.html
總結
以上是生活随笔為你收集整理的服务器里的文件怎么实时更新,简单几步,利用Serverless,让COS中文件变更自动刷新CDN...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 函数幂计算机中怎么用,Excel中幂函数
- 下一篇: 本地服务器模板网站怎么安装,本地服务器怎