利用python解决hexo next主题大量空白行问题

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

因为感觉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运行!

去空行前:
去空行前

去空行后:
去空行前

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值