资讯专栏INFORMATION COLUMN

一些关于Logecho的新动态

jayzou / 1961人阅读

摘要:关于的基本介绍,大家可以去看我之前写的一篇文章。对于一个懒人来讲,我是无法容忍这些繁冗的动作的。并且根据客户端的支持情况,以压缩的方式发送出去。专门为设计是的,这才是重点。装好后你的服务器上会多一个名为的命令,我们就用它来启动服务。

原文地址:http://www.l4zy.com/posts/new...

好久没有更新 Logecho 了,最近把它狠狠地更新了一次。

关于 Logecho 的基本介绍,大家可以去看我之前写的一篇文章。目前你看到的这个站点也是用 Logecho 搭建的。相比于 Typecho 我个人还比较习惯于使用这类静态博客工具来发布我的文章,因为我已经习惯于在编辑器里来写各类文字,感觉也很舒服。

但是各类静态博客工具的部署很麻烦,要不然需要你自己去配置一台http服务器。或者放到github这类的网站上,还需要你熟悉git命令。对于一个懒人来讲,我是无法容忍这些繁冗的动作的。于是,我对 Logecho做 了一些调整,让你我可以舒心的撰写文字,不必再去搞那些幺蛾子。

Logecho现在的安装步骤

首先最大的优化就是我让 Logecho 支持了composer,所以你不需要再去手动配置代码即可随时使用或者更新这一工具了。如果你已经安装过了composer并且配置好了的话,可以直接跳到第三步。

第一步,安装composer

安装起来非常简单,如果你没有安装composer,在macosx下可以用brew安装

brew install composer
第二步,配置composer的bin目录

然后我们需要把composer的bin路径加入到系统路径里,在Linux或者OSX上打开bash配置文件(应该是~/.bashrc或者~/.bash_profile之类,不同的系统各不相同),加入

export PATH="$PATH:~/.composer/vendor/bin"

加入完以后记得source一下配置文件,或者重新启动一个会话让配置生效

如果是Windows系统,需要到系统变量里把这个路径加到Path变量里,一般是C:UsersAppDataRoamingComposervendorin,你也可以参考这里

在各大Linux下的官方源里也已经集成进去了,直接安装就行。其它操作系统参考官方文档。

第三步,安装Logecho

安装完composer后,再安装Logecho即可

composer global require joyqi/logecho:*

好了,所有的步骤都已完成,你可以直接在命令行下输入logecho命令来使用这一工具了。具体使用方法参考我写的前一篇介绍,如果你想升级直接执行上方的命令即可。

Logecho Simple Server

好了,上面只是对一些历史问题的纠正,这让你使用起来更加方便,但是真正称为杀手级应用的是标题中所说的“Logecho Simple Server”。

特点

这也是我刚刚写的一个小的 node.js 程序,它是除了是一个迷你的web服务器以外,还具有如下特点

一个完整的服务器

是的,虽然它很小,但是它的的确确是一个完整的服务器,你可以放心地把它部署到生产环境中而不需要其它服务器软件的辅助。当然如果你服务器还运行了其它诸如 nginx,apache 之类的服务器,你也可以把它放到后端,然后做一个反向代理。

部署方便

安装只需要一行命令(前提是你地服务器上已经安装了 node.js 环境)

npm install -g logecho-simple-server
没有配置文件

是的,我个人很讨厌配置文件。既然这个服务器名字里带了一个Simple,那么就不应该有配置文件这么复杂的东西存在。所以所有的配置都通过参数完成,而且它的参数也不多,大多数工作它都替你智能完成了。

速度快

这个服务器不需要任何文件系统的支持,因为所有的数据都存储在内存中。你可能担心那内存不是要被撑爆了,其实不会。因为这个它是设计给单人使用的,这就决定了它的容量不会很大,根据我们的测算一个人的数据大概也就在几兆到几十兆之间,这是完全可以接受的。

而它带来的好处是巨大的,首先是速度快,没有任何磁盘 IO 让它可以以非常快的速度响应,并且支撑相当恐怖的访问量。其次,你可以把它部署在任何支持 node.js 的云服务上,而不用担心它的数据如何存储。

针对 http 协议,我也做了优化,所有的资源文件都会设置缓存的http header。并且根据客户端的支持情况,以压缩的方式发送出去。

专门为 Logecho 设计

是的,这才是重点。一款专门为 Logecho 设计的服务器,想要同步文件只需要打开本地博客目录中的config.yaml文件,找到sync:这一行,把它改为如下这种

sync: http://xxxxxxxxxxxxxxxxx@your-domain.com

其中xxxxxxxxxxxxxxxxx是密钥,用来验证你是否是这台服务器的主人,服务端和客户端的要一致。配置正确以后,每次想同步的时候执行一下命令即可

logecho sync blog-dir/
使用

用上面所说的一行命令,在你的服务器上安装好以后,就可以很方便的来使用了。装好后你的服务器上会多一个名为 logechod 的命令,我们就用它来启动服务。

$ logechod
2015-03-24T14:26:35.492Z - info: The secure key is: 2369097d-c761-4fbb-93a1-d375e7cea5fa
2015-03-24T14:26:35.493Z - info: Listening on 0.0.0.0:80

如果你没有运行其它的http服务的话,直接运行这个命令,服务器就会启动了。你会看到上面的信息,比如它会告诉你监听地址,以及密钥。这个密钥是随机生成的,每次运行都会不一样,如果你想固定的话可以使用-k参数手动指定。

这个时候在浏览器里访问你的服务器,会看到如下画面

这是因为你还没有往服务器里同步任何数据,用上面的同步命令同步以后就可以看到内容了。下面是一些常用参数

-k 指定密钥,如不指定则会随机生成

-h 指定监听地址,如127.0.0.1,默认0.0.0.0

-p 指定监听端口,默认 80

--prefer-host= 指定最佳域名,服务器会默认把不属于这个域名的请求跳转到指定域名上

--ip-address= 指定获取客户端ip的header头,如果不指定服务器会把连接的ip作为地址,但是如果你把服务器放在某些反向代理的后面,那就需要传递一个header头过来告诉它真正的ip地址是多少

--http-to-https= 只有当启用https访问的时候才会生效,监听一个指定的http端口,从而将http的访问请求重定向到https上

--https-key= https的密钥

--https-cert= https的证书

--perform-resource=yes 是否开启资源优化模式,默认开启。

关于资源优化模式

这是一个很好用的功能,所以我默认把它开启了。它会深度分析你的所有资源文件,首先计算它们各自的hash值,并建立索引。然后再找出它们之间的引用关系,最后利用上面索引过的hash值给他们的url后面加上戳记,什么意思呢?比如下面的html文件



    

服务器会找到/public/style.css这个文件并获取它的hash值,然后再将它标记回原来的html文件中



    

这样有什么用呢?上面说过,服务器会自动给所有的资源文件都加上缓存的http header,如果是以前的写法,下次你改变了这个文件,浏览器还是会从缓存文件中去取。因为它的url没有改变,但如果按上述方法处理,每次修改都必然带来hash值的改变,那么浏览器就会强行更新这个文件的缓存了。

目前资源优化模式会对html和css文件起作用。

写在最后

这个系统肯定还有很多 bug 未解决,欢迎大家跟我探讨。另外这个系统是使用英文书写,由于水平有限,很多用词都属于Chinglish,欢迎有这方面基础的童鞋来提交pull request帮忙完善。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31920.html

相关文章

  • 2020年50%的计算将在边缘完成,“边云协同”成为物联网发展的新模式

    摘要:边云协同是物联网的未来大趋势。如今在四个行业发布了多个测试床,新增个,包括边缘智能边云协同和边缘安全创新等领域。边云协同是能够促使边缘计算行业快速发展的一个主要因素之一。张宇博士认为,这就是物联网发展的摩尔定律。大量物联网设备所产生的数据洪流加大了云端的存储和计算压力,因此有人提出将存储和计算在边缘端完成的策略,边缘计算在两年前应运而生,经过两年发展目前已经在安防和工业领域初见成果,IDC预...

    dabai 评论0 收藏0
  • JavaScript工作原理(二):V8引擎和5招高效代码

    摘要:引擎可以用标准解释器或即时编译器来实现,即时编译器以某种形式将代码编译为字节码。这里的主要区别在于不生成字节码或任何中间代码。请注意,不使用中间字节码表示法,不需要解释器。这允许在正常执行期间非常短的暂停。 本系列的第一篇文章重点介绍了引擎,运行时和调用栈的概述。第二篇文章将深入V8的JavaScript引擎的内部。我们还会提供一些关于如何编写更好的JavaScript代码的技巧。 概...

    leone 评论0 收藏0
  • 让 Angular 1.x 跟上时代的步伐

    摘要:所以说的模块机制没有解决文件依赖关系和文件异步加载的问题。大部分团队还是停留在第二第三阶段,每个阶段的实现都有很多种选择。希望这篇文章能够激起大家永远保持积极向前追求完美代码的心,不仅对自己的成长也会对公司带来无限的价值。 本篇技术博客来自有着化腐朽为神奇能力的,Worktile 技术牛人Web 总监 @徐海峰 大神的分享~满满的干货,你值得拥有! Worktile 的前端构建之路 2...

    李增田 评论0 收藏0

发表评论

0条评论

jayzou

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<