What is hexo-server and hexo-browsersync?

  • hexo-server 可以让你实时在本地预览你的hexo博客, 而不必编译整个网站, 对于编写博文和调试hexo本身的插件主题是很有用的
  • hexo-browsersync 只有hexo-server的话,每次改完都得手动刷新一下浏览器, 这很不科学. browsersync 可以自动在你保存文件的时候自动化地刷新浏览器

What is the problem?

实时预览/自动刷新, 这些都很普通. 所以我的期望也很普通, 装上能用就行. 奇怪的是, 有时候写着写着, 它突然间就不灵光了! 更神奇的是, 有时候删除掉一些文本后, 它又突然能 work 了. 追踪问题的过程太琐碎就不细说了, 总的来讲, 这玩意返回的 Content-Length 是错的, 比实际内容短, 导致浏览器将后面(也可能服务器也根本不输出了?)的内容被丢弃. 看了 hexo-server 的 github ,竟然没人提这个 issue? 好吧,若不是用的人少,那即是我太啰嗦写文太长了.

How to solve

当然, 关键还是怎么解这个问题. 我在 hexo/hexo-server 这几个 repos 翻了半天, 竟然都没有发现有 Content-Length 的设定. 有点神奇, 就在万般无奈的情况下, 看到 hexo-server 的 config 里面有一项叫做 compress . 一般服务器对内容压缩都会使用流 式压缩, 即不会使用 Content-Length 预设页面的长度. 经过测试, 确实可以解决代码被截断的问题:

_config.yml 加入:

1
2
3
4
5
6
7
8
9
server:
  port: 5000
  log: false
  ip: 127.0.0.1
  compress: true
  header: true
  serveStatic:
    extensions:
    - html