前言
使用PHP代码实现一个简易的随机图API,随机的图片可以来自于对象存储、CDN或其它任何已知的图片链接;同时在Header中声明禁止缓存,这样即使不清除缓存地刷新(F5,清除缓存则Ctrl+F5)也可以得到新的图片。
代码实现
<?php
$arr = array(
'https://cloud.colorfulstage.cn/wp/2023/08/20230804135126639.png',
'https://cloud.colorfulstage.cn/wp/2023/08/20230804135116921.png',
'https://cloud.colorfulstage.cn/wp/2023/08/20230804135104564.png',
'https://cloud.colorfulstage.cn/wp/2023/08/20230804135051912.png',
'https://cloud.colorfulstage.cn/wp/2023/08/20230804135041248.png'
);
$key = array_rand($arr, 1);
Header("HTTP/1.1 301 Moved Permanently");
Header("Cache-Control: no-cache, must-revalidate");
Header('Location: ' . $arr[$key]);
exit;
注意:
- 可以在
$arr
中添加更多的已知图片链接 $key = array_rand($arr, 1);
是真随机而不是轮询,因此有概率出现连续多次出现同一张图片Header("Cache-Control: no-cache, must-revalidate");
是必需的禁止缓存声明,这样不清除缓存地刷新也会得到一张新图片;否则浏览器会把图片作为静态内容缓存下来,因为这并不是get请求- 最后一行的
exit;
应当保留,确保此php程序正常退出
之后把上述代码保存成php文件,可以把它直接丢到WordPress的工作目录中,得到随机图API
your.wordpress.domain/rd-pic.php
其中your.wordpress.domain
为WordPress主站域名,rd-pic.php
为保存的文件名
设置防盗链
如果使用对象存储或CDN作为图床,建议在服务提供商那里配置防盗链(一般是通过限制referer实现)
在线演示
本站的封面随机图API为
https://blog.colorfulstage.cn/random-sekai.php
(已开启防盗链,仅供预览演示)