вопрос
Облачные функции Tencent начнут взимать плату с 1 июня 2022 года, что составляет почти 12 юаней в месяц. Для людей, которые не могут использовать облачные функции для обновления кэша в течение нескольких месяцев, это слишком дорого. Вы можете сэкономить много денег, обновив свою CDN с помощью Node.js и GitHub Actions.
npm install qcloud-cdn-node-sdk
vim .scripts/qcloudcdn.js
/**
* Refresh Qcloud CDN cache
* @command `node qcloudcdn.js $SECRET_ID $SECRET_KEY`
*/
const qcloudSDK = require('qcloud-cdn-node-sdk');
// Get the config from https://console.qcloud.com/capi
qcloudSDK.config({
secretId: process?.argv[2],
secretKey: process?.argv[3]
})
qcloudSDK.request('RefreshCdnDir', {
// See https://cloud.tencent.com/document/api/228/3947
'dirs.0': 'https://lruihao.cn/'
}, (res) => {
res.code && console.log(res)
})
Открыть package.json
Увеличивать scripts
:
{
"scripts": {
"qcloudcdn": "node .scripts/qcloudcdn.js $SECRET_ID $SECRET_KEY"
}
}
Как запустить:
SECRET_ID=<secretId> SECRET_KEY=<secretKey> npm run qcloudcdn
Конфигурация переменных среды Mac OS (необязательно)
vim ~/.bash_profile
# Qcloud secret key-value
export SECRET_ID=<secretId>
export SECRET_KEY=<secretKey>
source ~/.bash_profile
Тогда инструкцию можно упростить локально как npm run qcloudcdn или yarn qcloudcdn. Эквивалентно SECRET_ID=SECRET_ID SECRET_KEY=SECRET_KEY npm run qcloudcdn
в оригинале Увеличить на один шаг после развертывания в GitHub Действия:
- name: Refresh Qcloud CDN cache
env:
SECRET_ID: ${{ secrets.SECRET_ID }}
SECRET_KEY: ${{ secrets.SECRET_KEY }}
run: npm run qcloudcdn
на складе Settings > Secrets > Actions середина Увеличиватьдва Secret: SECRET_ID
и SECRET_KEY
,Получается, что если вы испытали Конфигурацию, она вам не нужна.,например,Моё настоящее имя было COS_SECRET_ID
и COS_SECRET_ID
,Затем измените приведенное выше Конфигурация env Имя переменной в .
Наконец, загрузите код, и кеш CDN будет автоматически обновляться при будущем обновлении хранилища.
Старый, использованный в этом проекте API Метод запроса, в случае неудачи можно обратиться к новому API, см. SDK-ориентированный。