Typecho使用阿里云cdn和oss
- 设置前需要保证阿里云cdn和oss已配置好且可以正常使用
- 一、准备工作
- 二、修改 Handsome 主题的静态资源链接
- 方法 1:直接修改主题文件(推荐)
- 方法 2:通过主题设置自定义(方便)
 
- 三、处理特殊资源
- 1. 字体文件(如 .woff2)
- 2. 懒加载占位图
 
- 四、验证与调试
- 五、使用typecho插件自动上传文件
- 六、备份与回滚
- 六、自动化同步(可选)
- 七、常见问题
- Q1:修改后页面布局错乱
- Q2:CDN 缓存未更新
 
- 八、常见错误分析与解决(补充)
- 问题:资源404错误
- 问题:OSS 403 Forbidden错误
- 问题:CDN缓存与刷新
- 问题:site.webmanifest语法错误
 
 
 
设置前需要保证阿里云cdn和oss已配置好且可以正常使用
一、准备工作
-  确认 OSS 资源已同步: - 将主题的静态资源(CSS/JS/图片/字体)上传到 OSS Bucket,路径与本地保持一致。
 例如:将/usr/themes/handsome/assets同步到 OSS 的/handsome/asserts。
  
 
- 将主题的静态资源(CSS/JS/图片/字体)上传到 OSS Bucket,路径与本地保持一致。
-  验证 OSS 访问权限: - 确保通过 https://static.blog.ybyq.wang/handsome/css/style.css可直接访问文件。
 
- 确保通过 
二、修改 Handsome 主题的静态资源链接
方法 1:直接修改主题文件(推荐)
-  定位资源引用位置: 
 Handsome 主题的静态资源主要在以下文件中定义:- /usr/themes/handsome/component/header.php:头部 CSS/JS 引用。
- /usr/themes/handsome/component/footer.php:底部 JS 引用。
- /usr/themes/handsome/css/、- /js/、- /img/等目录下的文件。
 
-  替换资源域名: - 打开 header.php和footer.php,查找类似代码:<link rel="stylesheet" href="<?php $this->options->themeUrl('css/style.css'); ?>"> <script src="<?php $this->options->themeUrl('js/main.js'); ?>"></script>
- 修改为绝对路径,指向 OSS 地址:<link rel="stylesheet" href="https://static.blog.ybyq.wang/usr/themes/handsome/css/style.css"> <script src="https://static.blog.ybyq.wang/usr/themes/handsome/js/main.js"></script>
 
- 打开 
-  版本化控制(可选): - 在 URL 后添加版本号,强制浏览器刷新缓存:<link rel="stylesheet" href="https://static.blog.ybyq.wang/usr/themes/handsome/css/style.css?v=20231001">
 
- 在 URL 后添加版本号,强制浏览器刷新缓存:
方法 2:通过主题设置自定义(方便)
- 利用 Handsome 的 CDN 设置功能: - 登录 Typecho 后台,进入 外观 > Handsome 主题设置 > 基础设置。
- 查找 静态资源 CDN 地址 或 自定义 CSS/JS 链接 选项,填写 OSS 地址:https://static.blog.ybyq.wang/handsome/assets
- 保存设置后,主题会自动拼接路径(Handsome主题支持此功能)。
  
 
三、处理特殊资源
1. 字体文件(如 .woff2)
- 修改字体文件路径,通常位于 CSS 文件中:/* 原代码 */ @font-face {src: url('../fonts/iconfont.woff2') format('woff2'); }/* 修改后 */ @font-face {src: url('https://static.blog.ybyq.wang/usr/themes/handsome/fonts/iconfont.woff2') format('woff2'); }
2. 懒加载占位图
- 在 主题设置 > 外观设置 > 懒加载 中,将默认占位图替换为 OSS 地址(这个开启后会自动添加):https://static.blog.ybyq.wang/handsome/img/loading.gif
四、验证与调试
-  浏览器开发者工具: - 打开 https://blog.ybyq.wang,按F12进入开发者工具,切换到 Network 选项卡。
- 检查所有 CSS/JS/图片/字体请求是否来自 static.blog.ybyq.wang,状态码为200或304。
 
- 打开 
-  强制刷新缓存: - 按 Ctrl+F5强制刷新页面,避免本地缓存干扰。
 
- 按 
-  混合内容警告: - 确保所有 OSS 资源链接为 https://,若存在http://请求,浏览器会提示不安全,需修正为 HTTPS。
 
- 确保所有 OSS 资源链接为 
五、使用typecho插件自动上传文件
-  使用插件AliOssForTypecho 
  
-  插件中的AccessKey在阿里云控制台中创建 
  
-  在阿里oss建立好 usr/uploads/文件夹,使用插件上传后的图片会存储在里面
  
-  F5重载网站,检查图片路径是否为阿里云oss的路径 
  
 控制台显示,路径为https://static.blog.ybyq.wang/usr/uploads/,引用成功。
六、备份与回滚
- 备份主题文件: - 修改前,将 /usr/themes/handsome/目录整体压缩备份。
 
- 修改前,将 
- 快速回滚: - 若修改后页面异常,直接上传备份文件恢复即可。
 
六、自动化同步(可选)
- 使用 ossutil 工具同步:# 将本地主题资源实时同步到 OSS ossutil sync -u /www/wwwroot/blog.ybyq.wang/usr/themes/handsome/ oss://blog-static-ybyq/usr/themes/handsome/ --delete
- 宝塔面板定时任务: - 添加 Shell 脚本,每天凌晨同步一次:ossutil64 cp -r /www/wwwroot/blog.ybyq.wang/usr/themes/handsome/ oss://blog-static-ybyq/usr/themes/handsome/ --update
 
- 添加 Shell 脚本,每天凌晨同步一次:
使用这种同步方式需保持两边路径相同
七、常见问题
Q1:修改后页面布局错乱
- 原因:资源路径错误或 OSS 文件未同步。
- 解决: - 检查浏览器控制台报错信息,确认缺失的文件。
- 核对 OSS 中文件路径是否与代码中的引用一致。
- 检查目录名字是否正确
 
Q2:CDN 缓存未更新
- 解决:在阿里云 CDN 控制台手动刷新对应文件的缓存,或在 URL 后添加版本号(如 ?v=20231002)。
通过以上步骤,Handsome 主题的静态资源将全部通过 OSS + CDN 加速,显著提升加载速度并降低服务器负载。
八、常见错误分析与解决(补充)
问题:资源404错误
错误示例:
GET https://blog.ybyq.wang/usr/themes/handsome/assets/js/main.min.js net::ERR_ABORTED 404 (Not Found)
GET https://blog.ybyq.wang/usr/themes/handsome/assets/css/main.min.css net::ERR_ABORTED 404 (Not Found)
解决方法:
-  路径不一致问题:检查主题设置和OSS中的路径格式是否一致 - 可能存在 /usr/themes/handsome/assets/和/handsome/assets/两种不同路径
- 建议统一为一种路径格式,推荐使用与本地相同的完整路径 /usr/themes/handsome/assets/
 
- 可能存在 
-  修改主题设置: - 进入 Handsome 主题设置 > 基础设置
- 确认"静态资源CDN地址"填写完整路径:https://static.blog.ybyq.wang/usr/themes/handsome
- 如果使用简化路径,确保OSS中的目录结构与之匹配
 
-  检查OSS中的文件是否已上传: - 登录阿里云OSS控制台,确认所有静态资源文件都已正确上传
- 测试直接访问OSS中的文件,例如:https://static.blog.ybyq.wang/usr/themes/handsome/assets/js/main.min.js
 
问题:OSS 403 Forbidden错误
错误示例:
GET https://static.blog.ybyq.wang/handsome/assets/js/features/jquery.pjax.min.js net::ERR_ABORTED 403 (Forbidden)
解决方法:
-  检查Bucket权限设置: - 登录OSS控制台
- 选择您的Bucket > 权限管理 > 读写权限
- 确保设置为"公共读"(推荐)或"公共读写"
 
-  检查Referer防盗链设置: - 选择您的Bucket > 权限管理 > 防盗链
- 如果启用了防盗链,确保添加了 blog.ybyq.wang到白名单
- 或者暂时关闭防盗链测试
 
-  检查CORS跨域设置: - 选择您的Bucket > 权限管理 > 跨域设置
- 添加规则:来源 https://blog.ybyq.wang,允许的方法GET,允许的头*
 
问题:CDN缓存与刷新
当修复问题后,CDN可能仍然提供旧的缓存内容,导致问题持续存在。
解决方法:
-  手动刷新CDN缓存: - 登录阿里云CDN控制台
- 选择"刷新预热" > “刷新”
- 添加需要刷新的URL或目录: - URL刷新: https://static.blog.ybyq.wang/usr/themes/handsome/assets/js/main.min.js
- 目录刷新: https://static.blog.ybyq.wang/usr/themes/handsome/
 
- URL刷新: 
 
-  添加版本号: - 修改资源引用URL,添加版本参数强制浏览器获取新版本:
 <link rel="stylesheet" href="https://static.blog.ybyq.wang/usr/themes/handsome/assets/css/main.min.css?v=20250428">
问题:site.webmanifest语法错误
错误示例:
Manifest: Line: 1, column: 1, Syntax error.
解决方法:
-  检查webmanifest文件: - 在服务器上找到并打开 site.webmanifest文件
- 确保是有效的JSON格式
- 基本格式应类似:
 {"name": "博客名称","short_name": "简称","icons": [{"src": "/icon-192x192.png","sizes": "192x192","type": "image/png"},{"src": "/icon-512x512.png","sizes": "512x512","type": "image/png"}],"theme_color": "#ffffff","background_color": "#ffffff","display": "standalone" }
- 在服务器上找到并打开 
-  如果不需要此功能,可以在主题中禁用: - 编辑 /usr/themes/handsome/component/header.php
- 找到引用 site.webmanifest的行,注释掉或删除
 
- 编辑 
补充说明:如果网站仍然间歇性错乱,建议检查是否存在多个CDN配置冲突,或者是否启用了浏览器缓存(Service Worker)相关功能。有时候需要清除浏览器缓存并强制刷新(Ctrl+F5)来测试最新配置是否生效。
作者:xuan
个人博客:https://blog.ybyq.wang
欢迎访问我的博客,获取更多技术文章和教程。