本人近期打算修复一下一直无法使用的博客阅读次数。
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中的
1 | let result = vendorJs ? `<script src="//fastly.jsdelivr.net/combine/${vendorJs}"></script>` : ''; |
修改为
1 | let result = vendorJs ? `<script src="//d-sketon.top/combine/${vendorJs}"></script>` : ''; |
themes\shoka\source\js_app中的
1 | if(str.indexOf('npm')>-1||str.indexOf('gh')>-1||str.indexOf('combine')>-1) |
修改为
1 | if(str.indexOf('npm')>-1||str.indexOf('gh')>-1||str.indexOf('combine')>-1) |
并在服务器上创建对应的js文件使用nginx进行URL映射,注意增加缓冲防止js被截断
1 | 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 { |
将MiniValine.min.js中所有的cdn.jsdelivr改为fastly.jsdelivr
经过测试后发现md5.min.js,av-min.js均获取成功,且可以获得阅读次数,修复完成。