jsdelivr被墙,hexo-next切换为自定义CDN

Thank you all for your tests, feedback and support. I am personally sorry for the issues we had today.
We can consider the issue as resolved, now its a question of DNS propagation getting to everyone.
Our official announcement regarding the problems today:
Unfortunately today jsDelivr unexpectedly lost its ICP license in China. As effect the regional cdn disabled our account.

This resulted in the extended outage we had in mainland China and Taiwan.

Other regions were unaffected.

We understand how difficult it was for our users to experience this unique situation.

From now on all Chinese traffic will be served by “near China” locations provided by global CDN providers.

This will have the additional benefit of better failover logic in the future.

jsDelivr被吊销ICP许可证五个月后,cdn.jsdelivr.net开始遭到污染,非魔法上网已经不能正常加载,各中原因不做讨论,无外乎滥用

本博客使用 Hexo 框架和 NexT 主题,默认使用的是 JSDelivr 作为 静态资源的 CDN 服务提供商,为了能正常访问,所以需要切换到国内cdn

1. 升级Next主题

  • 使用npm管理的

    # 目前最新的是8.11.1,大于8.9.0就可以 npm install hexo-theme-next@8.11.1 
  • 使用git仓库管理的使用git pull

2.修改Next主题CDN

修改本地_config.next.yml

# It's recommended to use the same version as in `_vendors.yml` to avoid potential problems. # Remember to use the HTTPS protocol of CDN links when you enable HTTPS on your site. vendors: # The CDN provider of NexT internal scripts. # Available values: local | jsdelivr | unpkg | cdnjs | custom # Warning: If you are using the latest master branch of NexT, please set `internal: local` internal: local # The default CDN provider of third-party plugins. # Available values: local | jsdelivr | unpkg | cdnjs | custom # Dependencies for `plugins: local`: https://github.com/next-theme/plugins plugins: custom # Custom CDN URL # For example: # custom_cdn_url: https://cdn.jsdelivr.net/npm/${npm_name}@${version}/${minified} # custom_cdn_url: https://cdnjs.cloudflare.com/ajax/libs/${cdnjs_name}/${version}/${cdnjs_file} # jsdelivr: `https://cdn.jsdelivr.net/npm/${name}@${version}/${file}`, # unpkg : `https://unpkg.com/${name}@${version}/${file}`, # cdnjs : `https://cdnjs.cloudflare.com/ajax/libs/${alias || name}/${version}/${file.replace(/^(dist|lib|)\/(browser\/|)/, '')}` custom_cdn_url: https://lib.baomitu.com/${cdnjs_name}/${version}/${cdnjs_file} 

3. 修改谷歌字体库

修改_config.next.yml配置项

font: enable: true # Uri of fonts host, e.g. https://fonts.googleapis.com (Default). host: https://fonts.geekzu.org 

4.修改Valine

... <script> document.addEventListener('page:loaded', () => { NexT.utils.loadComments(CONFIG.valine.el) .then(() => NexT.utils.getScript( 'https://cdn.jsdelivr.net/npm/valine@1.4.14/dist/Valine.min.js', { condition: window.Valine } )) .then(() => { new Valine(CONFIG.valine); }); }); </script> ... <script> NexT.utils.loadComments('#valine-comments', () => { NexT.utils.getScript('https://cdn.jsdelivr.net/npm/valine@1.4.14/dist/Valine.min.js', () => { new Valine(Object.assign({{ config.valine | safedump }}, { el: '#valine-comments', path: {{ url_for(page.path) | replace(r/index\.html$/, '') | safedump }}, serverURLs: {{ serverURLs | safedump }} })); }, window.Valine); }); </script> 

修改node_modules/hexo-next-valine/valine.njk

{%- if next_data %} {{ next_data('valine', config.valine, { el: '#valine-comments', path: url_for(page.path) | replace(r/index\.html$/, ''), libUrl: config.valine.libUrl | default('https://lib.baomitu.com/valine/latest/Valine.min.js',true), serverURLs: config.valine.serverURLs or 'https://' + config.valine.appId.slice(0, 8) | lower + '.api.lncldglobal.com' }) }} <script> document.addEventListener('page:loaded', () => { NexT.utils.loadComments(CONFIG.valine.el) .then(() => NexT.utils.getScript( CONFIG.valine.libUrl, { condition: window.Valine } )) .then(() => { new Valine(CONFIG.valine); }); }); </script> {%- else %} {%- set serverURLs = config.valine.serverURLs or 'https://' + config.valine.appId.slice(0, 8) | lower + '.api.lncldglobal.com' %} {%- set libUrl = config.valine.libUrl | default('https://lib.baomitu.com/valine/latest/Valine.min.js',true) %} <script> NexT.utils.loadComments('#valine-comments', () => { NexT.utils.getScript('{{libUrl}}', () => { new Valine(Object.assign({{ config.valine | safedump }}, { el: '#valine-comments', path: {{ url_for(page.path) | replace(r/index\.html$/, '') | safedump }}, serverURLs: {{ serverURLs | safedump }} })); }, window.Valine); }); </script> {%- endif %} 

使用patch-package修改node_module,配合github/actions使用

npm i patch-package -D 

生成补丁包

npx patch-package hexo-next-valine 

_config.next.yml增加配置项

valine: enable: true appId: xx # Your leancloud application appid appKey: xx # Your leancloud application appkey # library CDN url, you can set this to your preferred CDN libUrl: https://cdnjs.cloudflare.com/ajax/libs/valine/1.4.18/Valine.min.js 

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/30461

(0)
优速盾-小U的头像优速盾-小U
上一篇 2025年6月18日 18:42
下一篇 2025年6月18日 23:04

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml