东光 發表於 2023-8-28 00:00:00

阿里云CDN刷新链接接口实践

<p>
        今天更改了一个线上的css文件,由于项目部署了cdn,需要对缓存进行清理。有两种方式;</p>
<p>
        <strong>一、清除cdn缓存</strong></p>
<p>
        <strong>二、更改页面引入文件地址,如加入版本号</strong></p>
<p>
        第一种方式需要登录阿里云,然后进行缓存清理操作,比较麻烦;</p>
<p>
        第二种方式如果是涉及的页面数量过多,在更改起来也是非常麻烦的。</p>
<p>
        我们使用的阿里云的cdn产品,记得以往的产品都有api接口,想通过阿里云cdn接口模式对链接进行缓存清除操作。</p>
<p>
        <strong>下面是php实例:</strong></p>
<p>
        一、安装SDK</p>
<p>
        使用composer进行安装,命令:</p>
<p>
        composer require alibabacloud/client</p>
<p>
        二、获取阿里云参数</p>
<p>
        1、accessKeyId</p>
<p>
        2、accessSecret</p>
<p>
        <strong>建议使用子密钥</strong></p>
<blockquote>
        <ol class="dp-c">
<li class="alt">
                        <span><span>&lt;?php </span></span>
</li>
                <li>
                        <span><span class="comment">/**</span> </span>
</li>
                <li class="alt">
                        <span><span class="comment"> * Created by PhpStorm.</span> </span>
</li>
                <li>
                        <span><span class="comment"> * User: Administrator</span> </span>
</li>
                <li class="alt">
                        <span><span class="comment"> * Date: 2019/10/29 0029</span> </span>
</li>
                <li>
                        <span><span class="comment"> * Time: 10:10</span> </span>
</li>
                <li class="alt">
                        <span><span class="comment"> */</span><span> </span></span>
</li>
                <li>
                        <span>  </span>
</li>
                <li class="alt">
                        <span>namespace App\index\controller; </span>
</li>
                <li>
                        <span>  </span>
</li>
                <li class="alt">
                        <span>use AlibabaCloud\Client\AlibabaCloud; </span>
</li>
                <li>
                        <span>use AlibabaCloud\Client\Exception\ClientException; </span>
</li>
                <li class="alt">
                        <span>use AlibabaCloud\Client\Exception\ServerException; </span>
</li>
                <li>
                        <span>use think\Controller; </span>
</li>
                <li class="alt">
                        <span>use think\Request; </span>
</li>
                <li>
                        <span>  </span>
</li>
                <li class="alt">
                        <span><span class="keyword">class</span><span> Cdn </span><span class="keyword">extends</span><span> Controller </span></span>
</li>
                <li>
                        <span>{ </span>
</li>
                <li class="alt">
                        <span>    <span class="keyword">protected</span><span> $accessKeyId; </span></span>
</li>
                <li>
                        <span>    <span class="keyword">protected</span><span> $accessSecret; </span></span>
</li>
                <li class="alt">
                        <span>  </span>
</li>
                <li>
                        <span>    <span class="keyword">public</span><span> </span><span class="keyword">function</span><span> __construct(Request $request = </span><span class="keyword">null</span><span>) </span></span>
</li>
                <li class="alt">
                        <span>    { </span>
</li>
                <li>
                        <span>        parent::__construct($request); </span>
</li>
                <li class="alt">
                        <span>        $<span class="keyword">this</span><span>-&gt;accessKeyId  = </span><span class="string">'123456789'</span><span>; </span></span>
</li>
                <li>
                        <span>        $<span class="keyword">this</span><span>-&gt;accessSecret = </span><span class="string">'123456789'</span><span>; </span></span>
</li>
                <li class="alt">
                        <span>    } </span>
</li>
                <li>
                        <span>  </span>
</li>
                <li class="alt">
                        <span>    <span class="keyword">public</span><span> </span><span class="keyword">function</span><span> index() </span></span>
</li>
                <li>
                        <span>    { </span>
</li>
                <li class="alt">
                        <span>        $url = <span class="string">'http://www.demo.com/css/index.css'</span><span>; </span></span>
</li>
                <li>
                        <span>        AlibabaCloud::accessKeyClient($<span class="keyword">this</span><span>-&gt;accessKeyId, $</span><span class="keyword">this</span><span>-&gt;accessSecret) </span></span>
</li>
                <li class="alt">
                        <span>            -&gt;regionId(<span class="string">'cn-hangzhou'</span><span>) </span></span>
</li>
                <li>
                        <span>            -&gt;asDefaultClient(); </span>
</li>
                <li class="alt">
                        <span>        <span class="keyword">try</span><span> { </span></span>
</li>
                <li>
                        <span>            $result = AlibabaCloud::rpc() </span>
</li>
                <li class="alt">
                        <span>                -&gt;product(<span class="string">'Cdn'</span><span>) </span></span>
</li>
                <li>
                        <span>                <span class="comment">// -&gt;scheme('https') // https | http</span><span> </span></span>
</li>
                <li class="alt">
                        <span>                -&gt;version(<span class="string">'2018-05-10'</span><span>) </span></span>
</li>
                <li>
                        <span>                -&gt;action(<span class="string">'RefreshObjectCaches'</span><span>) </span></span>
</li>
                <li class="alt">
                        <span>                -&gt;method(<span class="string">'POST'</span><span>) </span></span>
</li>
                <li>
                        <span>                -&gt;host(<span class="string">'cdn.aliyuncs.com'</span><span>) </span></span>
</li>
                <li class="alt">
                        <span>                -&gt;options([ </span>
</li>
                <li>
                        <span>                    <span class="string">'query'</span><span> =&gt; [ </span></span>
</li>
                <li class="alt">
                        <span>                        <span class="string">'RegionId'</span><span>   =&gt; </span><span class="string">"cn-hangzhou"</span><span>, </span></span>
</li>
                <li>
                        <span>                        <span class="string">'ObjectPath'</span><span> =&gt; $url, </span></span>
</li>
                <li class="alt">
                        <span>                    ], </span>
</li>
                <li>
                        <span>                ]) </span>
</li>
                <li class="alt">
                        <span>                -&gt;request(); </span>
</li>
                <li>
                        <span>            $res    = $result-&gt;toArray(); </span>
</li>
                <li class="alt">
                        <span>            <span class="keyword">if</span><span>(isset($res[</span><span class="string">'RefreshTaskId'</span><span>])) { </span></span>
</li>
                <li>
                        <span>                echo <span class="string">'刷新成功'</span><span>; </span></span>
</li>
                <li class="alt">
                        <span>            } <span class="keyword">else</span><span> { </span></span>
</li>
                <li>
                        <span>                echo <span class="string">'刷新失败'</span><span>; </span></span>
</li>
                <li class="alt">
                        <span>            } </span>
</li>
                <li>
                        <span>        } </span>
</li>
                <li class="alt">
                        <span>        <span class="keyword">catch</span><span>(ClientException $e) { </span></span>
</li>
                <li>
                        <span>            echo $e-&gt;getErrorMessage() . PHP_EOL; </span>
</li>
                <li class="alt">
                        <span>        } </span>
</li>
                <li>
                        <span>        <span class="keyword">catch</span><span>(ServerException $e) { </span></span>
</li>
                <li class="alt">
                        <span>            echo $e-&gt;getErrorMessage() . PHP_EOL; </span>
</li>
                <li>
                        <span>        } </span>
</li>
                <li class="alt">
                        <span>  </span>
</li>
                <li>
                        <span>    } </span>
</li>
                <li class="alt">
                        <span>} </span>
</li>
        </ol>
</blockquote>
<p>
        建议在提交刷新后,2分钟后查看效果,注意要清除浏览器缓存哦!</p>
頁: [1]
查看完整版本: 阿里云CDN刷新链接接口实践