前言
在WordPress性能优化中,对象存储已成为托管图片、CSS、JavaScript等静态资源的黄金标准。这种方案能:
✓ 提升50%以上的页面加载速度
✓ 降低70%的服务器负载
✓ 保证99.9%的资源可用性
✓ 节省高达60%的存储成本
传统方案需要复杂的插件配置和密钥管理,而腾讯云轻量对象存储(Lighthouse版)带来突破性变革——像管理本地磁盘一样简单:
• 直接挂载为服务器本地目录
• 无需插件即可自动同步
• 文件操作与普通磁盘无异
• 保持对象存储的所有优势
前提条件
- WordPress 部署在腾讯云轻量应用服务器(Lighthouse)上。
- 开通轻量对象存储。
- 准备一个 CDN 用来加速对象存储,例如 EdgeOne 。现 EdgeOne 推出了不计量的免费版套餐,只要购买中国香港及海外地域的轻量应用服务器或云服务器CVM,且订单实付 > 50元,即可参与晒单得 EdgeOne 免费兑换码。需要注意的是:如果要启用 EdgeOne 国内加速需要网站有备案,海外加速不需要。(PS:个人版也很便宜,一年才几十块。)
详细操作过程
第一步:创建一个存储空间(Bucket)
进入腾讯云控制台 > 轻量应用服务器 > 对象存储 > 创建存储桶。尚未购买轻量对象存储包的用户可以点这里按活动价购买(比云硬盘便宜多了)。
这里需要注意的是所属地域需选择与轻量应用服务器相同地域,例如轻量服务器在广州区域,那么存储桶的地域也应选择广州。
第二步:将存储桶挂载到轻量应用服务器
WordPress 的上传目录路径为:站点根目录/wp-content/uploads
,那么存储桶需要挂载的路径也应与之对应。在执行挂载之前,如果该目录下已有文件,需要先备份到它处,然后暂停站点访问功能并删除 /wp-content/uploads
目录下所有文件及目录,否则会挂载失败。
选择服务器:选择需要挂载该存储桶的轻量云服务器。
存储桶挂载目录:这里指的是存储桶中的路径,建议填写 /wp-content/uploads
,这样一来存储桶中的静态资源访问路径与 WordPress 路径相同,方便后续做 URL 改写。
服务器挂载目录:这需要填写绝对路径。使用宝塔面板的用户,创建的站点默认路径为:/www/wwwroot
目录下,如果不确定绝对路径,可以在“WordPress 后台 > 工具 > 站点健康 > 信息”中查看,如下图:
等待大约 1 分钟左右,直至显示挂载成功。
挂载成功后,启用站点访问并将备份的 /wp-content/uploads
目录下的文件复制回来。
现在所有保存在 /wp-content/uploads
目录下的文件已经存储在轻量对象存储中了。
第三步:设置存储桶访问权限
回到对象存储的设置界面,将存储桶访问权限设置为:公有读私有写,然后启用“托管静态网站”功能,如下图:
这样一来,对象存储的 URL :对象存储访问域名/wp-content/uploads/
与 网站域名/wp-content/uploads/
访问的是相同的路径、相同的目录。
第四步:配置 CDN
轻量对象存储的套餐包是有外网下行流量限制的,超出套餐的外网下行流量是额外计费的,为了避免流量被盗刷强烈建议使用 CDN 缓存并避免泄露对象存储的访问 URL,下面以腾讯云 EdgeOne 为例。
因为 WordPress 的 /wp-content/uploads
目录中通常只有静态文件,所以缓存规则非常简单,通常可以将节点缓存设置为 365 天,浏览器缓存也设置成 365 天。这样可以大幅降低回源压力。
第五步:改写 /wp-content/uploads
目录访问URL
方法一:通过插件实现(推荐)
你可以使用任意的 WordPress 主流缓存/优化插件。比如 Perfmatters、 W3 Total Cache Pro、WP Rocket 、WP-Optimize Premium 等都支持静态资源的 CDN 地址改写。
优点:方便、可视化管理。
缺点:增加插件依赖。
Perfmatters 配置示例:
W3 Total Cache Pro 配置示例:
WP Rocket 配置示例:
使用 WP Rocket 的用户需要注意的是,需要在下方设置从CDN中排除的文件/路径,因为除了 /wp-content/uploads
目录之外其余目录的资源并没有保存到对象存储,如果不排除会返回 404 错误。
方法二:在 WordPress 中添加代码
如果你不想装插件,可以直接用过滤器 wp_get_attachment_url
、wp_calculate_image_srcset
、content_url
来统一替换:
// 替换附件地址为 CDN 域名
add_filter('wp_get_attachment_url', function ($url) {
return str_replace(home_url('/wp-content/uploads/'), 'https://cdn.zhanzhangb.com/wp-content/uploads/', $url);
});
// 替换文章内容里的媒体地址
add_filter('the_content', function ($content) {
return str_replace(home_url('/wp-content/uploads/'), 'https://cdn.zhanzhangb.com/wp-content/uploads/', $content);
});
// 替换缩略图 srcset
add_filter('wp_calculate_image_srcset', function ($sources) {
foreach ($sources as $key => $source) {
$sources[$key]['url'] = str_replace(home_url('/wp-content/uploads/'), 'https://cdn.zhanzhangb.com/wp-content/uploads/', $source['url']);
}
return $sources;
});
// 替换静态资源 URL
add_filter('content_url', function ($url) {
return str_replace(home_url('/wp-content/'), 'https://cdn.zhanzhangb.com/wp-content/', $url);
});
这样无论是文章里的图片、特色图、缩略图、还是直接引用的资源,都会改写成 CDN 域名(注意将代码中的 cdn.zhanzhangb.com 替换成自己的 CDN 加速域名)。
以上代码可以添加到当前主题的 functions.php
文件中,也可以使用如 WPCode Pro (推荐)类似的代码片段插件插入代码。
方法三:Web 服务器层面改写
如果你用 Nginx/Apache,也可以直接 rewrite:
Nginx 示例
location ~* ^/wp-content/uploads/(.*)$ {
rewrite ^/wp-content/uploads/(.*)$ https://cdn.zhanzhangb.com/wp-content/uploads/$1 redirect;
}
这种方式是服务端重定向,效果没有 PHP 过滤优雅(因为会多一次跳转),一般不推荐。
总结
通过腾讯云轻量应用服务器的对象存储功能,WordPress 用户可以轻松打造高效、低成本的图床方案。从存储桶挂载、权限设置到 CDN 加速和 URL 改写,本文详细介绍了每一步的操作方法,帮助用户优化网站性能并降低服务器负载。无论是使用插件、代码还是服务器配置,都能灵活实现静态资源托管,让 WordPress 站点加载更快、运行更稳。