阿里云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><?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>->accessKeyId = </span><span class="string">'123456789'</span><span>; </span></span>
</li>
<li>
<span> $<span class="keyword">this</span><span>->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>->accessKeyId, $</span><span class="keyword">this</span><span>->accessSecret) </span></span>
</li>
<li class="alt">
<span> ->regionId(<span class="string">'cn-hangzhou'</span><span>) </span></span>
</li>
<li>
<span> ->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> ->product(<span class="string">'Cdn'</span><span>) </span></span>
</li>
<li>
<span> <span class="comment">// ->scheme('https') // https | http</span><span> </span></span>
</li>
<li class="alt">
<span> ->version(<span class="string">'2018-05-10'</span><span>) </span></span>
</li>
<li>
<span> ->action(<span class="string">'RefreshObjectCaches'</span><span>) </span></span>
</li>
<li class="alt">
<span> ->method(<span class="string">'POST'</span><span>) </span></span>
</li>
<li>
<span> ->host(<span class="string">'cdn.aliyuncs.com'</span><span>) </span></span>
</li>
<li class="alt">
<span> ->options([ </span>
</li>
<li>
<span> <span class="string">'query'</span><span> => [ </span></span>
</li>
<li class="alt">
<span> <span class="string">'RegionId'</span><span> => </span><span class="string">"cn-hangzhou"</span><span>, </span></span>
</li>
<li>
<span> <span class="string">'ObjectPath'</span><span> => $url, </span></span>
</li>
<li class="alt">
<span> ], </span>
</li>
<li>
<span> ]) </span>
</li>
<li class="alt">
<span> ->request(); </span>
</li>
<li>
<span> $res = $result->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->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->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]