这篇文章首发在吹水小镇:http://blog.reetsee.com/archives/388
要在手机或者电脑看到更好的图片或代码欢迎到博文原地址。也欢迎到博文原地址批评指正。
历时半年的「吹水新闻」重构升级终于完成
吹水新闻2.0的地址是:http://news.reetsee.com;
吹水新闻1.0的地址是:http://reetseenews.duapp.com。(由于没有续费可能已经失效)
那么新版比旧版相比有哪些不同?
体验
自动识别移动端和PC端:旧版要访问移动版页面需要在首页点击“进入移动版”或者在URL的HOST后面加上“/m”,例如”news.reetsee.com/m”。现在新版统一访问“news.reetsee.com”即可,后端识别到移动端访问时会自动使用移动端的网页样式,识别到PC端会自动使用PC端的网页样式;
加载速度「嗖嗖嗖」:旧版页面加载速度很慢,对比例子(由于没有续费1.0页面可能已经失效):http://reetseenews.duapp.com/view/20141227/AEG1SH4M00014JB5和http://news.reetsee.com/entry?category=232。新版优先展示加载速度更快的内容,而旧版会等所有内容都准备好才展现。页面的平均响应时间从旧版的2~5秒提高到新版的1秒内,更加接近「即点即展现」,加载速度嗖嗖嗖;
新闻更实时,当天新闻当天看:旧版的更新时间在每晚接近凌晨的时候才更新当天的「过时」新闻,当天新闻隔天才能看到,而且每次更新实际是人工启动的。新版的更新是自动的,每天早上8点1刻、中午12点1刻、傍晚18点1刻以及夜晚的23点50分都会自动更新,当天新闻当天看;
展现更稳定,告别白页:旧版不时会出现连接时间过长或直接展现白页的情况,新版连接时间更短更稳定,告别白页。
有排版,看着才舒服:旧版的文字内容完全没有排版,新版的内容是会分端分行的,想想都有点小感慨,以前竟然忍受了那么久没有排版的文字。排版后效果大致如下:
技术
这次从技术上真正将吹水新闻完整地迁移到LNMP,关于LNMP的搭建可以参见这篇博客:http://blog.reetsee.com/archives/296。
前端页面的编程语言从旧版的HTML+Javscript+CSS+Python变成新版的HTML+Javscript+CSS+PHP。
后端编程语言(包括爬虫)从旧版的纯Python变成新版的PHP+C++。
吹水新闻的整体流程及结构如下:
旧版的吹水新闻Web应用框架用的是Python的「Flask」,爬虫使用了Python的「Scrapy」,分词使用了Python的结巴分词「jieba」。
新版的吹水新闻Web页面+反向代理服务器是「Nginx+PHP」实现的,爬虫使用了PHP的「Phpfetcher」,分词使用了C++的结巴分词「cppjieba」。
以前评论概括是使用Python同步完成的,现在则是页面在第一次加载好后发送异步请求到PHP,然后PHP与C++通过Unix域套接字通信,协议是自己写的很简单的格式在这里:协议格式。代码在这里:协议代码。C++评论概括服务接到PHP的请求后会进行分词然后调用一个简单的算法进行概括评论的内容,再通过协议打包好发回给PHP,PHP再将数据以JSON的格式返回。
关于Phpfetcher这个爬虫可以参见这篇博文:http://blog.reetsee.com/archives/366。
还有一些细节就不一一列举了,主要是整个吹水新闻的架构、代码要全部重写所以折腾了比较久。欢迎大家多多使用~!
如果想知道吹水新闻1.0的详细内容,可以参考这两篇博客:http://blog.reetsee.com/archives/235以及http://blog.reetsee.com/archives/237。