要在 ThinkPHP 中实现静态文件 CDN 加速,可以通过配置应用程序的 main/config.php 文件来实现。具体步骤如下:
定义常量 CDN_DOMAIN,该常量存储 CDN 加速的域名或地址,例如:
define('CDN_DOMAIN', 'https://cdn.example.com');
修改模板文件中的静态资源路径,将其中的相对路径改为绝对路径,同时加上 CDN_DOMAIN 的前缀,例如:
修改入口文件 index.php,将所有非 PHP 后缀的请求(如静态文件请求)重定向至 CDN 地址,例如:
if (strpos($_SERVER['REQUEST_URI'], '.') !== false) { $extension = strtolower(pathinfo($_SERVER['REQUEST_URI'], PATHINFO_EXTENSION)); if (in_array($extension, ['jpg', 'jpeg', 'gif', 'png', 'ico', 'css', 'js'])) { header("Location: " . CDN_DOMAIN . $_SERVER['REQUEST_URI'], true, 301); exit; } }
需要注意的是,这里使用了 pathinfo 函数获取请求 URI 的文件后缀,并判断其是否在允许 CDN 加速的文件扩展名列表中。如果不需要重定向某些文件类型,则可以修改扩展名列表。
最后,确认 CDN 域名已经配置正确并可正常访问,否则可能会导致 CDN 加载失败。