Typecho博客使用阿里云cdn和oss:handsome主題進階版

Typecho使用阿里云cdn和oss

      • 設置前需要保證阿里云cdn和oss已配置好且可以正常使用
      • 一、準備工作
      • 二、修改 Handsome 主題的靜態資源鏈接
        • 方法 1:直接修改主題文件(推薦)
        • 方法 2:通過主題設置自定義(方便)
      • 三、處理特殊資源
        • 1. 字體文件(如 .woff2)
        • 2. 懶加載占位圖
      • 四、驗證與調試
      • 五、使用typecho插件自動上傳文件
      • 六、備份與回滾
      • 六、自動化同步(可選)
      • 七、常見問題
        • Q1:修改后頁面布局錯亂
        • Q2:CDN 緩存未更新
      • 八、常見錯誤分析與解決(補充)
        • 問題:資源404錯誤
        • 問題:OSS 403 Forbidden錯誤
        • 問題:CDN緩存與刷新
        • 問題:site.webmanifest語法錯誤

設置前需要保證阿里云cdn和oss已配置好且可以正常使用

一、準備工作

  1. 確認 OSS 資源已同步

    • 將主題的靜態資源(CSS/JS/圖片/字體)上傳到 OSS Bucket,路徑與本地保持一致。
      例如:將 /usr/themes/handsome/assets 同步到 OSS 的 /handsome/asserts
      在這里插入圖片描述
  2. 驗證 OSS 訪問權限

    • 確保通過 https://static.blog.ybyq.wang/handsome/css/style.css 可直接訪問文件。

二、修改 Handsome 主題的靜態資源鏈接

方法 1:直接修改主題文件(推薦)
  1. 定位資源引用位置
    Handsome 主題的靜態資源主要在以下文件中定義:

    • /usr/themes/handsome/component/header.php:頭部 CSS/JS 引用。
    • /usr/themes/handsome/component/footer.php:底部 JS 引用。
    • /usr/themes/handsome/css//js//img/ 等目錄下的文件。
  2. 替換資源域名

    • 打開 header.phpfooter.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>
      
  3. 版本化控制(可選)

    • 在 URL 后添加版本號,強制瀏覽器刷新緩存:
      <link rel="stylesheet" href="https://static.blog.ybyq.wang/usr/themes/handsome/css/style.css?v=20231001">
      
方法 2:通過主題設置自定義(方便)
  1. 利用 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
    

四、驗證與調試

  1. 瀏覽器開發者工具

    • 打開 https://blog.ybyq.wang,按 F12 進入開發者工具,切換到 Network 選項卡。
    • 檢查所有 CSS/JS/圖片/字體請求是否來自 static.blog.ybyq.wang,狀態碼為 200304
  2. 強制刷新緩存

    • Ctrl+F5 強制刷新頁面,避免本地緩存干擾。
  3. 混合內容警告

    • 確保所有 OSS 資源鏈接為 https://,若存在 http:// 請求,瀏覽器會提示不安全,需修正為 HTTPS。

五、使用typecho插件自動上傳文件

  1. 使用插件AliOssForTypecho
    在這里插入圖片描述

  2. 插件中的AccessKey在阿里云控制臺中創建
    在這里插入圖片描述

  3. 在阿里oss建立好usr/uploads/文件夾,使用插件上傳后的圖片會存儲在里面
    在這里插入圖片描述

  4. F5重載網站,檢查圖片路徑是否為阿里云oss的路徑
    在這里插入圖片描述
    控制臺顯示,路徑為https://static.blog.ybyq.wang/usr/uploads/,引用成功。


六、備份與回滾

  1. 備份主題文件
    • 修改前,將 /usr/themes/handsome/ 目錄整體壓縮備份。
  2. 快速回滾
    • 若修改后頁面異常,直接上傳備份文件恢復即可。

六、自動化同步(可選)

  1. 使用 ossutil 工具同步
    # 將本地主題資源實時同步到 OSS
    ossutil sync -u /www/wwwroot/blog.ybyq.wang/usr/themes/handsome/ oss://blog-static-ybyq/usr/themes/handsome/ --delete
    
  2. 寶塔面板定時任務
    • 添加 Shell 腳本,每天凌晨同步一次:
      ossutil64 cp -r /www/wwwroot/blog.ybyq.wang/usr/themes/handsome/ oss://blog-static-ybyq/usr/themes/handsome/ --update
      

使用這種同步方式需保持兩邊路徑相同


七、常見問題

Q1:修改后頁面布局錯亂
  • 原因:資源路徑錯誤或 OSS 文件未同步。
  • 解決
    1. 檢查瀏覽器控制臺報錯信息,確認缺失的文件。
    2. 核對 OSS 中文件路徑是否與代碼中的引用一致。
    3. 檢查目錄名字是否正確
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)

解決方法

  1. 路徑不一致問題:檢查主題設置和OSS中的路徑格式是否一致

    • 可能存在 /usr/themes/handsome/assets//handsome/assets/ 兩種不同路徑
    • 建議統一為一種路徑格式,推薦使用與本地相同的完整路徑 /usr/themes/handsome/assets/
  2. 修改主題設置

    • 進入 Handsome 主題設置 > 基礎設置
    • 確認"靜態資源CDN地址"填寫完整路徑:https://static.blog.ybyq.wang/usr/themes/handsome
    • 如果使用簡化路徑,確保OSS中的目錄結構與之匹配
  3. 檢查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)

解決方法

  1. 檢查Bucket權限設置

    • 登錄OSS控制臺
    • 選擇您的Bucket > 權限管理 > 讀寫權限
    • 確保設置為"公共讀"(推薦)或"公共讀寫"
  2. 檢查Referer防盜鏈設置

    • 選擇您的Bucket > 權限管理 > 防盜鏈
    • 如果啟用了防盜鏈,確保添加了 blog.ybyq.wang 到白名單
    • 或者暫時關閉防盜鏈測試
  3. 檢查CORS跨域設置

    • 選擇您的Bucket > 權限管理 > 跨域設置
    • 添加規則:來源 https://blog.ybyq.wang,允許的方法 GET,允許的頭 *
問題:CDN緩存與刷新

當修復問題后,CDN可能仍然提供舊的緩存內容,導致問題持續存在。

解決方法

  1. 手動刷新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/
  2. 添加版本號

    • 修改資源引用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.

解決方法

  1. 檢查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"
    }
    
  2. 如果不需要此功能,可以在主題中禁用:

    • 編輯 /usr/themes/handsome/component/header.php
    • 找到引用 site.webmanifest 的行,注釋掉或刪除

補充說明:如果網站仍然間歇性錯亂,建議檢查是否存在多個CDN配置沖突,或者是否啟用了瀏覽器緩存(Service Worker)相關功能。有時候需要清除瀏覽器緩存并強制刷新(Ctrl+F5)來測試最新配置是否生效。


作者:xuan
個人博客:https://blog.ybyq.wang
歡迎訪問我的博客,獲取更多技術文章和教程。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/903308.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903308.shtml
英文地址,請注明出處:http://en.pswp.cn/news/903308.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

部署mongodb三幅本集群

背景&#xff1a;原先使用的mongodb采用的是SSPL協議&#xff0c;此協議客戶檢測到有bug&#xff0c;故需要替換mongodb的版本&#xff0c;原先采用helm部署的mongodb但是無法找到4.1.4版本的chart包&#xff0c;故手寫yaml部署 1、部署mongodb-arbiter服務 這個服務是用來選…

jdk1.8.0_05 在 SpringBootTest Debug模式下奔潰

之前好好的項目&#xff0c;最近換了之前的電腦&#xff0c;但是在使用SpringBootTest 啟動debug模式時&#xff0c;虛擬機就會奔潰&#xff0c;通過修改如果把 junit5 import org.junit.jupiter.api.Test; 修改為 junit4 ,就不奔潰了 import org.junit.Test; 但是這樣的…

QGIS+mcp的安裝和使用

QGISmcp的安裝和使用 安裝qgis_mcp 下載qgis_mcp&#xff1a; git clone https://github.com/jjsantos01/qgis_mcp.git安裝uv uv是一個由Rust語言編寫的python包管理工具&#xff0c;旨在提供比傳統工具&#xff08;如 pip&#xff09;更高效的依賴管理和虛擬環境操作。 p…

厚銅pcb生產廠家哪家好?

在為您的項目選擇厚銅PCB供應商時&#xff0c;技術實力、生產經驗與交付能力是決定產品可靠性的關鍵。隨著新能源汽車、工業電源、5G通信等領域對高電流承載、高效散熱的需求激增&#xff0c;厚銅PCB&#xff08;銅厚3oz以上&#xff09;的工藝門檻不斷提升。本文結合行業頭部企…

再見,物理刪除!MyBatis-Plus @TableLogic 優雅實現邏輯刪除

在開發應用程序時&#xff0c;我們經常會遇到需要刪除數據的場景。但直接從數據庫中物理刪除&#xff08;DELETE?&#xff09;數據有時并非最佳選擇。為什么呢&#xff1f; 數據恢復: 一旦物理刪除&#xff0c;數據通常難以恢復&#xff0c;誤操作可能導致災難性后果。審計追…

湖北理元理律師事務所:債務管理領域的平臺化創新探索

隨著中國居民負債率攀升至62%&#xff08;央行2023年數據&#xff09;&#xff0c;債務管理從個體需求演變為社會性課題。湖北理元理律師事務所通過“法律科技金融”的融合模式&#xff0c;構建了國內首個全鏈條債務管理平臺&#xff0c;其服務邏輯與行業價值值得深度剖析。 平…

【更新】LLM Interview (2)

字數溢出&#xff0c;不解釋 前文&#xff1a;llm interview (1) 文章目錄 強化學習專題1 什么是RL&#xff1f;2 RL和監督、非監督、深度學習的區別3 RL中所謂的損失函數與深度學習中的損失函數有何區別&#xff1f;4 RL歷史5 RL分類5.1 分類圖示5.2 根據智能體動作選取方式分…

高性價比手機如何挑選?

這四個關鍵點&#xff0c;助你找到心儀機~ 一、性能強者&#xff1a;游戲娛樂暢快到底 處理器相當于手機的 “大腦”&#xff0c;處理速度快、能力強&#xff0c;運行大型游戲毫無壓力。 搭配上大容量運存&#xff0c;多任務切換也能秒速完成&#xff0c;再也不怕游戲卡頓啦。…

測試—概念篇

1. 什么是需求 在多數軟件公司&#xff0c;會有兩部分需求&#xff0c;?部分是用戶需求&#xff0c;?部分是軟件需求。 1.1 用戶需求 用戶需求&#xff1a;可以簡單理解為甲方提出的需求&#xff0c;如果沒有甲方&#xff0c;那么就是終端用戶使?產品時必須要完成的任務。…

HTML5好看的水果蔬菜在線商城網站源碼系列模板7

文章目錄 1.設計來源1.1 主界面1.2 關于我們界面1.3 商城界面1.4 商品信息界面1.5 我的賬戶界面1.6 聯系我們界面 2.效果和源碼2.1 動態效果2.2 源代碼 源碼下載萬套模板&#xff0c;程序開發&#xff0c;在線開發&#xff0c;在線溝通 作者&#xff1a;xcLeigh 文章地址&#…

Atcoder Help 有關Atcoder 的介紹-1 漲分規則

AtCoder 的 Rating 計算系統基于改進的 Elo 算法&#xff0c;主要包含以下核心機制&#xff1a; 一、基礎計算公式 Rating 是「表現分(Performance)」的加權平均值減去衰減函數 f ( n ) f(n) f(n)&#xff0c;其中&#xff1a; 新用戶初始 f ( 1 ) 1200 f(1)1200 f(1)120…

設置右鍵打開VSCode

在日常的開發工作中&#xff0c;VSCode 是一款非常受歡迎的代碼編輯器。為了更加便捷地使用它&#xff0c;我們可以將 VSCode 添加到右鍵菜單中&#xff0c;這樣只需右鍵點擊文件或文件夾&#xff0c;就能快速用 VSCode 打開&#xff0c;極大地提高工作效率。下面我就來介紹一下…

python密碼學之密鑰HSM硬件抽象層(HAL)

目錄 摘要1. 項目背景與總體架構1.1 HSM 與 HAL 的必要性1.2 本項目目標1.3 模塊化設計2. 自研輕量對稱加密算法 SSC(SimpleSecureCipher)2.1 算法原理2.2 輪密鑰擴展3. HAL 接口與安全內存模擬3.1 HAL 接口定義3.2 安全內存 SecureMemory4. PyQt6 GUI 設計與功能模塊4.1 界面…

機器學習分類模型性能評估:應對類別不平衡的策略與指標

在機器學習的世界里&#xff0c;模型們就像一群努力破案的偵探&#xff0c;而數據就是它們的“犯罪現場”。今天&#xff0c;咱們的主角——一個自命不凡的分類模型&#xff0c;接到了一個看似簡單的任務&#xff1a;揪出那些患有罕見疾病的患者。這聽起來是不是很容易&#xf…

vue3代碼規范管理;基于vite和vue3、 eslint、prettier、stylelint、husky規范;git觸發eslint校驗

前言 為提高前端代碼格式化和規范開發。主要使用eslint、prettier、husky完成對git提交commit信息校驗和代碼eslint格式化校驗&#xff0c;不符合要求的代碼&#xff0c;提交不到倉庫。 參考鏈接1 參考鏈接2 文章目錄 前言一、效果圖1.git提交觸發eslint規范校驗2.版本與分支名…

GCC 內建函數匯編展開詳解

1. 引言 GNU 編譯器集合&#xff08;GCC&#xff09;是廣泛使用的開源編譯器套件&#xff0c;支持多種編程語言&#xff0c;其中 C 語言編譯器是其核心組件之一。在 C 語言編譯過程中&#xff0c;GCC 不僅處理用戶編寫的標準 C 代碼&#xff0c;還提供了一類特殊的函數——內建…

uniapp利用生命周期函數實現后臺常駐示例

在 Uniapp 中&#xff0c;利用生命周期函數實現“后臺常駐”主要是通過監聽應用的前后臺狀態變化&#xff08; onHide 和 onShow &#xff09;&#xff0c;并結合 定時器、后臺任務或狀態保持邏輯 來實現。但需注意&#xff1a; 純前端 JS 代碼無法突破系統對后臺應用的限制&am…

layui時間范圍

//時間范圍String time_range para.getString("time_range", "");if (!StrUtil.isEmpty(time_range)) {String dateArr[] time_range.split("-");if (dateArr.length 2) {para.put("start_date", dateArr[0].trim().replace("…

入門版 鴻蒙 組件導航 (Navigation)

入門版 鴻蒙 組件導航 (Navigation) 注意&#xff1a;使用 DevEco Studio 運行本案例&#xff0c;要使用模擬器&#xff0c;千萬不要用預覽器&#xff0c;預覽器看看 Navigation 布局還是可以的 效果&#xff1a;點擊首頁&#xff08;Index&#xff09;跳轉到頁面&#xff08…

VUE3:封裝一個評論回復組件

之前用React封裝的評論回復組件&#xff0c;里面有三個主要部分&#xff1a;CommentComponent作為主組件&#xff0c;CommentItem處理單個評論項&#xff0c;CommentInput負責輸入框。現在需要將這些轉換為Vue3的組件。 Vue3和React在狀態管理上有所不同&#xff0c;Vue3使用r…