MathJax插件Typecho博客的速度优化
Overview
由于在写笔记的时候会用到公式,因此使用了一个插件MathJax
,可以很漂亮显示公式,但是发现用了这个插件之后,有公式显示的页面加载特别慢,使用Chrome
查看了链接请求,发现了问题所在:这个插件会请求 cdn.mathjax.com 上的js
代码,而 cdn.mathjax.com 的服务器非常不稳定,因此经常需要等待很久,网页才能正常显示。
好在因为Chrome
会缓存js
,css
,图片等信息,因此通常这种情况会发生在用户第一次访问或者定期清理了缓存之后。
为了有更好的用户体验和加载速度,我把插件MathJax插件用到的库放到了我们自己的服务器上。
修改之后,发现还有外链,干脆直接一起给放到服务器上了。
MathJax公式插件
下载MathJax开源库
这里的MathJax库是指插件用到的开源库,可以在github上下载到:https://github.com/mathjax/MathJax
上传到服务器
下载之后解压缩,重命名为MathJax
,我放在了blog
的一个目录下:blog/usr/uploads/js
。
修改代码
在blog/usr/plugins中找到MathJax.php,MathJax.php就是插件MathJax的所有文件,编辑MathJax.php,找到下面这行代码:
echo '<script type="text/x-mathjax-config">MathJax.Hub.Config({tex2jax: {inlineMath: [[\'$\',\'$\'], [\'\\\\(\',\'\\\\)\']]}});</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>';
可以看到src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"
,修改为src="http://####/blog/usr/uploads/js/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"
就可以了。
这里的http://####/blog
就是我们博客的地址,可以看得出来,我们修改插件,让他指向了放在服务器上的MathJax
库。
现在重新打开网站涉及公式的文章,瞬间响应。
font-awesome
修改了MathJax插件之后,发现还是有外链存在,借助Chrome看了下博客的外链请求,发现下面的外链指向:http://apps.bdimg.com/libs/fontawesome/4.2.0/css/font-awesome.min.css,想了下还是放在自己的服务器上吧,一来是可以加速访问,二来可以防止哪天别人不提供服务了,我们就没办法加载这个css文件了。
下载font-awesome.min.css
直接从http://apps.bdimg.com/libs/fontawesome/4.2.0/css/font-awesome.min.css就可以打开这个css,右键另存就可以了。
上传到服务器
我们把自己保存的font-awesome.min.css上传到blog所在的文件夹下blog/usr/themes/jianshu/css,因为我们使用了jianshu主题,为了方便,我直接放在了jianshu的css文件夹中。
修改代码
找到 ,将下面这句代码:
<link rel="stylesheet" href="http://apps.bdimg.com/libs/fontawesome/4.2.0/css/font-awesome.min.css">
修改为
<link rel="stylesheet" href="<?php $this->options->themeUrl('css/font-awesome.min.css'); ?>">
就可以访问到我们服务器上的font-awesome.min.css了。
下载font-awesome资源文件
重新加载网页,发现网站上的小图标都没了!我开始去了解下font-awesome是什么,找到下面的解释:
Font Awesome 是为 Twitter Bootstrap 设计的图标字体。通过Web Font的方式来显示一些图标,好处是图标可以被任意缩放、改变颜色,你需要做的只是像修改文字样式那样修改图标样式。
清楚它的作用之后,再仔细查看font-awesome.min.css文件,发现里面有几处代码,举一例说明:
src:url('../fonts/fontawesome-webfont.eot?v=4.2.0');
src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0')
原来font-awesome.min.css定义的样式中用到的素材库我们没有放在服务器上。
从github上下载下来完整的font-awesome库:https://github.com/FortAwesome/Font-Awesome。下载之后解压缩,把其中的font文件夹上传到blog/usr/themes/jianshu文件夹中,跟这个文件夹中的css文件夹一个层级。
现在访问,就可以正常使用我们的网站了。
来源:http://www.nohup.cc/article/97/#menu_index_4
MathJax 插件
Notice
本插件可能导致文章中出现的类似 单价$2.5~$2.5
出现问题。
因为两个$
被我当作默认的行类公式标识符。
临时解决方案:可以参考这篇文章自行修改插件。另外
Markdown
会把\
当作转义符造写LaTex
书写上的困难,
需要自行把公式中的\
连写两次,像这样\\
;
一个比较方便的解决方法是在公式外面加上<div>
或者<p>
,
像这样<div>$$ $$</div>
这样可以隔离Markdown
对公式内的\
进行转义;
行内公式使用放在两个$之间:
$ E=MC $
段落公式放在两个$$之间:
$$
E=MC
$$
作者:https://2013.mutoo.im/mathjax-plugin.html
本地(MathJax插件):MathJax-1.0.1.zip
:D 少女祈祷中...