少女祈祷中...

本人近期打算修复一下一直无法使用的博客阅读次数。
Hexo-shoka主题所采用的是valine结合leancloud来记录每一篇博客的阅读次数,可不知道何时开始底下的阅读次数就始终为空。
01
通过查看F12可以发现,md5.min.js,av-min.js均获取失败,而发起程序则是MiniValine.min.js。其原因在于近期jsdelivr的DNS发生了污染所致。
02
可在这之前本人已经将博客内的jsdelivr均更换为了fastly镜像,可仍然发生了该异常,通过查看MiniValine.min.js可以发现在js内部引用了许多cdn.jsdelivr有关的资源。
03
考虑将js文件下载到服务器,并对js进行魔改操作。

将themes\shoka\scripts\helpers中的

1
2
let result = vendorJs ? `<script src="//fastly.jsdelivr.net/combine/${vendorJs}"></script>` : '';
return vendorJs ? htmlTag('script', { src: `//fastly.jsdelivr.net/combine/${vendorJs}` }, '') : '';

修改为

1
2
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中的

1
2
if(str.indexOf('npm')>-1||str.indexOf('gh')>-1||str.indexOf('combine')>-1)
return "//fastly.jsdelivr.net/" + str

修改为

1
2
if(str.indexOf('npm')>-1||str.indexOf('gh')>-1||str.indexOf('combine')>-1)
return "//d-sketon.top/" + str

并在服务器上创建对应的js文件使用nginx进行URL映射,注意增加缓冲防止js被截断

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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;
}

07
将MiniValine.min.js中所有的cdn.jsdelivr改为fastly.jsdelivr
经过测试后发现md5.min.js,av-min.js均获取成功,且可以获得阅读次数,修复完成。
06