因为感觉hexo好看的主题比jekyll要多,而且hexo是用JavaScript写的,相比较Ruby,对JavaScript也更熟悉,所以干脆使用hexo作为博客框架!但是使用一段时间后发现hexo框架也存在很多小问题,比如生成的html代码有大量的空白行,不知道是我使用的next主题才有这样的问题,还是Hexo框架本身的特性造成的,我注意到,相比jekyll,hexo主题的模块小而多。
本文固定地址: http://blog.jiangjiaolong.com/hexo-next-theme-minify.html
大量空白行的弊端
hexo生成的html文件,空白行就大概占据着三分之二,个人感觉大量的空白行有以下弊端:
1. 可读性差,如果想检查html代码的话,大量的空白行使源代码可读性非常差!
2. 影响访问速度,虽然换行符本身占用的内存很小,但是大量的无用换行符也会使温度变大,影响访问速度!
3. 不利与SEO优化,这一点有待考证,但是估计爬虫应该也不喜欢大量的换行符吧。
开始解决
在网上搜索了一下解决方案,大多是使用第三方插件,例如Gulp,使用方法点这里,我也下载试用了。首先压缩速度非常慢,大概是hexo生成静态页面时间的两倍!还有就是压缩的html代码不仅会去掉空白行,所有的的换行符都会被删除,因为看下了几个大型的门户网站,都没有这样的压缩处理,担心这样压缩后不利于SEO优化,所以还是放弃这种压缩方式。不过还是保留了对js及css的压缩处理,仅仅是注释掉了中间的html处理函数!
自己写一个小工具
问题还是要解决,既然现成的工具不满意,那就自己写一个!用什么语言写?当然是Python!
不到30行代码,搞定!测试了一下效果不错,速度也很不错,二三十个页面基本上一秒钟搞定!
附上源代码:
#!/usr/bin/env python3
# coding: UTF-8
import re,os
def minify_html(filename):
with open(filename,'r',encoding='utf-8') as p:
with open(filename+'.tmp','w',encoding='utf-8') as t:
while True:
l = p.readline()
if not l:
break
else:
if re.search('\S',l):
t.write(l)
os.remove(filename)
os.rename(filename+'.tmp',filename)
print('%s 已压缩!'%filename)
def yasuo(dir_path):
if dir_path[len(dir_path)-1] == '/':
dir_path = dir_path[:len(dir_path)-1]
file_list = os.listdir(dir_path)
for i in file_list:
if i.find('html') > 0:
minify_html(dir_path+'/'+i)
elif os.path.isdir(dir_path+'/'+i) and not re.match('\.|\_',i):
yasuo("%s/%s"%(dir_path,i))
yasuo('your_path')
将your_path替换成你的网站目录即可,请使用绝对路径,请使用python3运行!
去空行前:

去空行后:

博主分享了在使用Hexo Next主题时遇到HTML文件存在大量空白行的问题,分析了空白行的弊端,包括影响可读性、访问速度和可能的SEO优化。尝试使用Gulp插件压缩但不满意,因此决定自己用Python编写了一个小工具,仅去除空白行,保持代码可读性,且运行快速。文章提供了源代码供参考。
1235

被折叠的 条评论
为什么被折叠?



