使用React.js和應用快取構建快速同步應用程式
對大部分應用系統來說,在某種程度上,應用程式的快速載入和及時取得最新資料兩個方面同樣重要。傾向於積極使用快取資料,可能會導致提供的資料陳舊;而傾向於及時獲取最新資料,可能會犧牲載入時間。當然,也可以魚與熊掌兼得,但是可能會需要更多的硬體,更復雜的軟體,或兩者都需要(意味著一個字:錢)。
如何權衡取決於特定的應用系統和業務要求,本文就是我們的團隊使用React.js和應用快取來解決這一問題的一個例項。
我們從哪裡開始
標籤是每當你在瀏覽器上開啟一個標籤去送出一份慈善捐助的好理由。這是一件很偉大的事——但事實上,我們僅僅點選了一個價值 100,000美元的里程碑來完成慈善捐助——但是,我們有一個疑問。
我們的應用也太慢了。大家都明白這點。當使用者更換新的標籤頁時,他們需要得是速度與連貫性。而且,我們也沒有宣佈:載入頁面的延遲成為了人們關閉標籤的首選理由。
我們想讓我們的頁面除了更有用,還要更好地被接受。但隨著我們向頁面中加了些附加功能後, 我們的頁面載入問題也越來越突出了。因為人們需要我們的 APP 能快速地提供內容資訊。
我們正在用 Django 的模板系統做一個互動式伺服器來召喚或服務一個頁面。當使用者是在快速的網路環境中,而且我們的服務狀態是健康的情況下,伺服器響應時間是 ~65毫秒,還不是比較慘。然而,如果在你父母的房子*裡開啟一個標籤,或者我們的資料庫產生了一個短暫的停頓時,這可能會給你在對其的信任上,潑了一盆冷水。
比較讓人煩惱,我應該承認我們所建立的 APP 並沒有採用標準的前端框架,除了僅僅是使用了 JQuery。 考慮到我們的 APP 有太多的互動,而且太混亂了。在各種各樣的程式碼型別上,我要怎麼才能喜歡它。
我們需要去修改它。
- 我愛你們,老媽、老爸!時代華納有線電視, 沒有太多什麼了。
明確我們的需求
當準備去處理這個問題時,我們必須決定優先處理哪些以及放棄哪此需求。在這裡我們提出了一些建議:
頁面必須能快速載入。這是沒得討價還價的。
我們的頁面必須是非本地 URL。我們提高了 VIA 捐助廣告的價格,網路線上廣告需要去核識真實性來確保這些廣告是夠安全的。由於瀏覽器端的使用者頁面外掛總是將我們的廣告移除,以至於網路廣告只能使用 http 或 https 協議。
我們希望頁面中的內容是最新的,但不必是實時性的。我們通過裝置對使用者資料進行同步, 並保持完美的體驗。我們以分頁的形式顯示出使用者的反饋;例如,我們顯示出新使用者的統計資料;我們有時也要執行捐助裝置來以滾動條的形式顯示出 “募集資金” 量。雖然我們願意去接收一定程度上稍舊的資料(就像頁面展示後才提交資料),但理想得是在提交資料的瞬間發生。
我們要減少前端混亂的程式碼。將非優先權最高的程式碼肅清,這是一件讓人興奮的事。
文章轉載自 開源中國社群 [http://www.oschina.net]
相關文章
- 使用Golang快速構建WEB應用GolangWeb
- 使用 SCons 代替 Makefile 快速構建應用程式
- 【譯】如何使用PHP快速構建命令列應用程式PHP命令列
- 使用Rust和WebAssembly構建Web應用程式RustWeb
- 使用汽車應用庫構建應用
- iTunes構建版本 獲取不到應用程式
- 快速學習丨使用Blazor構建Web應用BlazorWeb
- 使用 webpack 構建應用Web
- 使用SignalR構建聊天應用程式SignalR
- 使用React Native和Expo快速構建原生移動iOS和Android應用程式React NativeiOSAndroid
- HTML5 應用程式快取HTML快取
- WebView快取原理分析和應用WebView快取
- WebView 快取原理分析和應用WebView快取
- 使用 Spring Boot 快速構建 Spring 框架應用Spring Boot框架
- Elastic App Search 快速構建 ES 應用ASTAPP
- 構建react.js應用的起步庫包倉庫:reactorReactJS
- 使用微服務構建現代應用程式微服務
- 使用Java和Reactive Streams構建流式應用JavaReact
- redis快取和業務應用瞭解Redis快取
- 4.1.7.2.4 使用快速應用程式通知
- 使用 IBM Bluemix 構建,部署和管理自定義應用程式IBM
- 使用 Docker 和 Elasticsearch 構建一個全文搜尋應用程式DockerElasticsearch
- 使用Java和Spring MVC構建Web應用JavaSpringMVCWeb
- JavaFX桌面應用-構建程式框架Java框架
- 使用webpack構建多頁應用Web
- 快應用快速入門教程
- flutter 獲取應用快取以及清除快取Flutter快取
- 構建 API 應用API
- 系統快取全解析4:應用程式資料快取快取
- 用VIPER構建iOS應用iOS
- 使用 React.js 的漸進式 Web 應用程式(1)ReactJSWeb
- 使用 React.js 的漸進式 Web 應用程式(2)ReactJSWeb
- 2.3.6 應用程式同步
- HTML5 應用程式快取簡介HTML快取
- 使用 Micronaut和OpenFaaS 構建無伺服器Java 應用程式 - openvalue伺服器Java
- 使用 jQuery UI 和 jQuery 外掛構建更好的 Web 應用程式jQueryUIWeb
- Go通過cobra快速構建命令列應用Go命令列
- 使用SvelteKit構建實時websocket應用程式 - IngestWeb