以编程方式清除cloudflare缓存

时间:2016-06-30 11:53:16

标签: node.js api callback cloudflare purge

我尝试在向node.js api发出请求后以编程方式清除单个URL的cloudflare缓存。我正在使用https://github.com/cloudflare/node-cloudflare库,但我无法弄清楚如何从cloudflare记录回调。根据同一个repo中的测试文件,语法应该是这样的:

//client declaration:

    t.context.cf = new CF({
        key: 'deadbeef',
        email: 'cloudflare@example.com',
        h2: false
      });

//invoke clearCache:

           t.context.cf.deleteCache('1', {
            files: [
              'https://example.com/purge_url'
            ]
          })

如何从此请求中读出回调? 我在自己的代码中尝试了以下内容:

client.deleteCache(process.env.CLOUDFLARE_ZONE, { "files": [url] }, function (data) {
    console.log(`Cloudflare cache purged for: ${url}`);
    console.log(`Callback:${data}`);
})

client.deleteCache('1', {
    files: [
        'https://example.com/purge_url'
    ]
}).then(function(a,b){
    console.log('helllllllooooooooo');
})

无济于事。 :(

3 个答案:

答案 0 :(得分:3)

我编写了一个nodejs模块来清除整个网站的缓存。它扫描您的“公共”文件夹,构建完整的URL,然后在cloudflare上清除它:

您可以使用npx运行它:

npm install -g npx

npx purge-cloudflare-cache your@email.com your_cloudflare_key the_domain_zone https://your.website.com your/public/folder

但是,您也可以安装它并使用npm运行:

npm install -g purge-cloudflare-cache

purge your@email.com your_cloudflare_key the_domain_zone https://your.website.com your/public/folder

对于公共/文件夹树,如:

├── assets
│   ├── fonts
│   │   ├── roboto-regular.ttf
│   │   └── roboto.scss
│   ├── icon
│   │   └── favicon.ico
│   └── imgs
│       └── logo.png
├── build
│   ├── main.css
│   ├── main.js
├── index.html

它将清除文件的缓存:

https://your.website.com/index.html
https://your.website.com/build/main.css
https://your.website.com/build/main.js
https://your.website.com/assets/imgs/logo.png
https://your.website.com/assets/icon/favicon.ico
https://your.website.com/assets/fonts/roboto.css
https://your.website.com/assets/fonts/roboto-regular.ttf

答案 1 :(得分:1)

这可能是因为我的mocha测试不等待回调返回。

https://github.com/mochajs/mocha/issues/362

答案 2 :(得分:0)

通过网址清除Cloudflare缓存:

var Cloudflare = require('cloudflare');

const { CF_EMAIL, CF_KEY, CF_ZONE } = process.env;

if (!CF_ZONE || !CF_EMAIL || !CF_KEY) {
  throw new Error('you must provide env. variables: [CF_ZONE, CF_EMAIL, CF_KEY]');
}
const client = new Cloudflare({email: CF_EMAIL, key: CF_KEY});
const targetUrl = `https://example.com/purge_url`;

client.zones.purgeCache(CF_ZONE, { "files": [targetUrl] }).then(function (data) {
  console.log(`Cloudflare cache purged for: ${targetUrl}`);
  console.log(`Callback:`, data);
}, function (error) {
  console.error(error);
});

您可以通过以下方式查找cloudflare区域:

client.zones.browse().then(function (zones) {
  console.log(zones);
})

不要忘记安装当前的客户端版本:

npm i cloudflare@^2.4.1 --save-dev