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

相關文章
相關標籤/搜索