本人近期打算修复一下一直无法使用的博客阅读次数。
Hexo-shoka 主题所采用的是 valine 结合 leancloud 来记录每一篇博客的阅读次数,可不知道何时开始底下的阅读次数就始终为空。
通过查看 F12 可以发现,md5.min.js,av-min.js 均获取失败,而发起程序则是 MiniValine.min.js。其原因在于近期 jsdelivr 的 DNS 发生了污染所致。
可在这之前本人已经将博客内的 jsdelivr 均更换为了 fastly 镜像,可仍然发生了该异常,通过查看 MiniValine.min.js 可以发现在 js 内部引用了许多 cdn.jsdelivr 有关的资源。
考虑将 js 文件下载到服务器,并对 js 进行魔改操作。
将 themes\shoka\scripts\helpers 中的
let result = vendorJs ? `<script src="//fastly.jsdelivr.net/combine/${vendorJs}"></script>` : ''; | |
return vendorJs ? htmlTag('script', { src: `//fastly.jsdelivr.net/combine/${vendorJs}` }, '') : ''; |
修改为
let result = vendorJs ? `<script src="//d-sketon.top/combine/${vendorJs}"></script>` : ''; | |
return vendorJs ? htmlTag('script', { src: `//d-sketon.top/combine/${vendorJs}` }, '') : ''; |
themes\shoka\source\js_app 中的
if(str.indexOf('npm')>-1||str.indexOf('gh')>-1||str.indexOf('combine')>-1) | |
return "//fastly.jsdelivr.net/" + str |
修改为
if(str.indexOf('npm')>-1||str.indexOf('gh')>-1||str.indexOf('combine')>-1) | |
return "//d-sketon.top/" + str |
并在服务器上创建对应的 js 文件使用 nginx 进行 URL 映射,注意增加缓冲防止 js 被截断
location ^~/combine/npm/pace-js@1.0.2/pace.min.js,npm/pjax@0.2.8/pjax.min.js,npm/whatwg-fetch@3.4.0/dist/fetch.umd.min.js,npm/animejs@3.2.0/lib/anime.min.js,npm/algoliasearch@4/dist/algoliasearch-lite.umd.js,npm/instantsearch.js@4/dist/instantsearch.production.min.js,npm/lozad@1/dist/lozad.min.js,npm/quicklink@2/dist { | |
alias /var/www/cdn; | |
proxy_buffer_size 128k; | |
proxy_buffers 32 128k; | |
proxy_busy_buffers_size 128k; | |
} | |
location ^~/gh/amehime/MiniValine@4.2.2-beta10/dist { | |
alias /var/www/cdn; | |
proxy_buffer_size 128k; | |
proxy_buffers 32 128k; | |
proxy_busy_buffers_size 128k; | |
} | |
location ^~/combine/npm/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css,npm/justifiedGallery@3.8.1/dist/css { | |
alias /var/www/cdn; | |
proxy_buffer_size 128k; | |
proxy_buffers 32 128k; | |
proxy_busy_buffers_size 128k; | |
} | |
location ^~/combine/npm/jquery@3.5.1/dist/jquery.min.js,npm/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js,npm/justifiedGallery@3.8.1/dist/js { | |
alias /var/www/cdn; | |
proxy_buffer_size 128k; | |
proxy_buffers 32 128k; | |
proxy_busy_buffers_size 128k; | |
} |
将 MiniValine.min.js 中所有的 cdn.jsdelivr 改为 fastly.jsdelivr
经过测试后发现 md5.min.js,av-min.js 均获取成功,且可以获得阅读次数,修复完成。