UfqiNews有福新闻的第N+1批次更新:清晰,流畅,省电

UfqiNews有福新闻自推出以来,一直持续更新、优化升级,做为一款带来全新新闻阅读体验的资讯应用,已经日益成熟,浏览量也日渐攀升。html

近日针对 UfqiNews有福新闻的升级改进包括以下方面。git

1. UI调整优化,清晰易读的页面导航github

改进页面导航,调整优化明晰的跳转指示:算法

↗ 读全文        ↘ 下一篇     ↖ 回首页

↖ 回首页       ↘ 下一篇        ↗ 读全文编程

UfqiNews利用各类方向的箭头,相似物理世界的导航同样,简单明了。
并且在不一样的操做系统平台上,如 iOS, Android后者WIndows中,不一样的箭头又以各自平台的UI特点显示出来,
与本地风格融合更好。swift

.数组

2. +分享功能,简单易用的新闻分享浏览器

为便于用户将页面分享出去,尤为是分享到各个社交网站,UfqiNews增长 ShareThis 分享按钮。缓存

用户能够很方便地经过页面底部使用 ShareThis 将当前页面分享出去。服务器

+  点击  AddToFav 或 Ctrl+D   52次转发  

经过 ShareThis 按钮能够直接连接到 数十种社交网站。

3. 调整缓存策略,页面加载更快,link prefetch/preload

UfqiNews在有限的计算资源和带宽资源下,尽快地加载并呈现页面,一直是咱们的技术团队努力的方向。 在这方面UfqiNews近期的主要努力包括:
1) 改进资源文件:图片、样式表CSS和脚本程序Scripts的缓存机制,使得这些资源在一个会话时间段内,只需首次从服务器下载并缓存到本地后,在该时段内,后面的页面加载时,这些资源文件都将从浏览器的本地缓存中自动加载,而无需每次从服务器端下载。
这将极大地改进页面加载速度。在资源类文件的 HTTP返回中,增长以下 HTTP headers.

HTTP/1.1 200 OK
Date: Sat, 14 Sep 2019 01:36:17 GMT
Last-Modified: Mon, 30 Jul 2018 08:59:19 GMT
ETag: “e2a-57233ad3e67c0”
Cache-Control: max-age=604800
Expires: Sat, 21 Sep 2019 01:36:17 GMT

2) 使用 link preload/prefetch 指令进行预加载
在支持预加载指令的浏览器中,UfqiNews使用 link preload / prefetch 指令,对接下来即将浏览的页面或资源进行自动加载。如在 list页面,自动加载 下一个 page; 在新闻详情页面,自动加载下一个 item,如此以来,当用户进行翻阅下一页时,页面将会实现秒开。

4. 重构爬虫引擎,抓取采集更节能

UfqiNews在生产端,有一个设计复杂的新闻爬虫系统,主要负责从各大新闻站点,将当地、当天最热门的新闻条目抓取回来。抓取回来的新闻页面内容进一步地使用天然语言处理技术对这些新闻条目进行分析,而后分门别类地列如到相应的类目下,供进一步地读取调用和使用。

这一页面抓取及分析系统,是分布式的计算系统,最先的设计其内容的流转是依靠NFS系统做为页面文件的承载服务。

(UfqiNews页面抓取系统/爬虫系统)

UfqiNews的分布式系统支持将这一爬虫系统部署成为一主多从的结构,能够同时启动N多个Node,而每一个Node里又能够启动M多个进程。从而造成强大的页面抓取能力,及时并行处理N*M个新闻页面。

像全部的分布式系统同样,UfqiNews须要有一种机制或者队列能保证数据的一致性,UfqiNews依赖NFS的网络文件分享机制,将内容和页面队列写入到一个NFS文件中,而且顺序读取,从而保证了页面读取的一致性。

在单个NOde上并行运行M个进程时,NFS及内容读写磁盘系统,都须要以来文件IO来实现,一个偶尔的机会,当咱们观测到跑在VmWare虚拟机中的耗电量在Windows的 Task Manager 中的“Power Usage” 和 “Power usage trend” 都为“Very high”, 进一步地分析发现,致使耗电量很是高,是因为 UfqiNews的生产爬虫系统的缘故。

(UfqiNews生产系统耗电量分析)

这种耗电量的现象,咱们以为是不可接受的,既不绿色,也不环保。并且其背后更深层次的缘由也好理解,频繁地文件IO读写访问,必定是要高频度地调用设备驱动,进行实际磁盘操做。

在此以前,咱们在review 目前的设计时,也以为,依赖NFS并不是长久之计,也非上上之选,只是以为应该改进优化,此次发现UfqiNews如此高耗能,成为压垮骆驼的最后一根稻草,必须对UfqiNews的文件IO及其队列作进一步的优化改进了。

最先的设计中,咱们但愿构建一套网络服务,用于存储在 UfqiNews运转过程当中的数据,相似AED Server这种的设计与操做。此次在对UfqiNews进行重构设计时,咱们发现问题的焦点在某种服务对文件IO的接管,也即不管是页面队列,仍是新闻页面内容,将写入文件的内容,存储到内存或者某个中间服务时,用完便可删除。

这种场景用 AED Server 是合适的,将页面内容或者页面队列存储到 AED Server 中去,能够知足需求,同时,也能够看到,相似的需求,与常规的”缓存“服务也很类似。

沿着这一思路,咱们考虑使用 Memcached 或者 Redis 来接管真实的文件IO,或可解决目前的问题。因而咱们就使用该方法对 UfqiNews的爬虫系统进行优化完善。

在凡是须要读写操做文件IO时,均改成读写 Memcached 的服务,对于页面内容,直接存取便可。 对于页面队列,则须要使用数组的形式,对其中的内容作动态更新,放入新生成的条目,同时丢弃已经处理完了的条目。

通过几周的断续修改和调整,咱们逐渐将 UfqiNews 的爬虫系统中的过程内容的文件IO所有替换为读写 Memcached ,Ufqinews的运行时耗电量也从 “Very high” 逐步下降下来。

Very high — High — Moderate — Low — Very low

尽管目前没有定量的数据,但Windows系统中的这个耗电量5级划分应该是有必定的依据的,而是次优化调整,也真切地显示出来。

做为软件编程技术人员,咱们一直在谈论算法改进,程序优化,但改进先后效果对好比此立竿见影天壤之别的状况,还不多见,体会也没有如此强烈。

5. +内容连接静态化,优化SEO,对搜索引擎索引更加友好

针对页面连接地址作进一步的调整,增长以下两个快捷连接到主要页面:

1)列表页面, list.123,456.html , 指向原来的 ./?pnskwordid=123,456

2) 内容详情页面, page.1234.html  , 指向原来的 ./?mod=rdr&pgid=1234

改进后,伪静态页面将根据有利于搜索引擎的抓取和页面分析。


ufqinews logo

有福新闻 UfqiNews

这里呈现热点全局, 尺寸间一览全部使人关注的疑点焦点;
这里表达条分缕析, 视野内一睹各个脉络清晰的故事主线.

有福新闻UfqiNews 带来全新的资讯阅览体验, 不信息过载, 亦不信息茧房.

在寻求最大社会共识和知足千人千面之间谋取平衡,
在知足普遍涉猎与追求术业专攻之间谋取平衡.

媒介插上人工智能的翅膀将如虎添翼, 与资讯比翼双飞.

新闻爱好者的良心之选, 匠心之做.

UfqiNews presents the hot spots globally, with all interesting points at a glance.
Information is organized here and there is a clear storyline within every single detail.

UfqiNews brings a brand new reading experience, no information overload and no information Cocoons,

In seeking a balance of the maximum social consensus and meeting thousands of people for each interest,
In achieving a balance between satisfying a wide range of hunting and pursuing specialization in the industry.

That media is being born with wings of the artificial intelligence will be even more powerful and the information will fly swifter than ever.

Better choices of newsreaders and the art of work from them.

-R/S2SM

相关文章
相关标签/搜索