【问题标题】:clearing cloudflare cache programmatically以编程方式清除 cloudflare 缓存
【发布时间】:2019-04-30 00:30:21
【问题描述】:

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

//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');
})

无济于事。 :(

【问题讨论】:

    标签: node.js api callback cloudflare purge


    【解决方案1】:

    通过 url 清除 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
    

    【讨论】:

      【解决方案2】:

      我编写了一个 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
      

      【讨论】:

      • 但这并不能回答问题。
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多