趙興華
【摘要】 科技的進(jìn)步給我的生活方式帶來了巨大改變。數(shù)據(jù)采集、智能手機(jī)、無線傳輸?shù)燃夹g(shù)的進(jìn)步加快了智能家居的發(fā)展,讓人們的生活更加便捷。我們可以利用電腦或移動(dòng)終端遠(yuǎn)程監(jiān)控室內(nèi)的溫度、耗電量、人,并可以遠(yuǎn)程控制家居和電器等。由于室內(nèi)監(jiān)控信息是時(shí)刻變化的,為了讓web端為用戶呈現(xiàn)準(zhǔn)確的數(shù)據(jù),將室內(nèi)的情況實(shí)時(shí)反饋到網(wǎng)頁上,我們采取了Ajax技術(shù)。對(duì)智能家居實(shí)現(xiàn)實(shí)時(shí)監(jiān)控存在的困難進(jìn)行分析,設(shè)定合理方案,完成Web端數(shù)據(jù)監(jiān)控的實(shí)時(shí)性。
【關(guān)鍵詞】 智能家居 Ajax 實(shí)時(shí)監(jiān)控
智能家居的實(shí)現(xiàn)結(jié)合多種技術(shù),首先硬件監(jiān)測(cè)設(shè)備將采集到的數(shù)據(jù)存入數(shù)據(jù)庫,web端監(jiān)測(cè)時(shí),需要每隔幾秒從服務(wù)器端獲取最新數(shù)據(jù)實(shí)現(xiàn)實(shí)時(shí)監(jiān)測(cè)。高頻度的數(shù)據(jù)請(qǐng)求使得服務(wù)器負(fù)載過重,因此我們分析實(shí)時(shí)數(shù)據(jù)采集、傳輸、顯示過程中存在的瓶頸,并基于Ajax技術(shù)構(gòu)建實(shí)時(shí)顯示解決方案。
一、Ajax技術(shù)及應(yīng)用
Ajax 是一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)。Ajax通過JavaScript可使用XMLHttpRequest對(duì)象來直接與服務(wù)器進(jìn)行通信。通過這個(gè)對(duì)象, JavaScript 可在不重載頁面的情況下與 Web 服務(wù)器交換數(shù)據(jù)。Ajax在瀏覽器與 Web 服務(wù)器之間使用異步數(shù)據(jù)傳輸,網(wǎng)頁的更新只需從服務(wù)器請(qǐng)求少量的信息,無需重新獲取整個(gè)頁面。Ajax只進(jìn)行局部頁面刷新,提高了系統(tǒng)性能,優(yōu)化了用戶界面。
二、Web應(yīng)用程序監(jiān)控
1、傳統(tǒng)監(jiān)測(cè)弊端分析。如果數(shù)據(jù)請(qǐng)求過程使用純粹的服務(wù)器端邏輯,這意味著每當(dāng)頁面有更新需要,服務(wù)器會(huì)創(chuàng)建一個(gè)新的HTML文檔并將其發(fā)送到Wed端,因此應(yīng)用程序失去了速度和動(dòng)力學(xué)特性。為了使得Web端更具響應(yīng)性、用戶友好,只需使單一的HTML文檔中的字段更新而無需重新加載完整的頁面。傳統(tǒng)的監(jiān)測(cè)模式采用了純粹的服務(wù)器端邏輯,會(huì)導(dǎo)致更多的網(wǎng)絡(luò)流量。本文引入的基于Ajax的局部刷新策略是客戶端邏輯。
2、實(shí)時(shí)數(shù)據(jù)獲取方案。當(dāng)用戶已經(jīng)通過服務(wù)器的身份驗(yàn)證,應(yīng)用程序從服務(wù)器自動(dòng)加載初始頁面。隨著HTML文檔被解釋,瀏覽器立即加載引用的CSS文件并執(zhí)行JavaScript文件,為了給HTML文檔加入類型和信息。AJAX 從服務(wù)器端獲取JSON數(shù)據(jù)的實(shí)現(xiàn),1、AJAX 的URL地址是JSON文件所在地址;2、如果請(qǐng)求成功并返回了數(shù)據(jù),其余的代碼才會(huì)被執(zhí)行;3、函數(shù)貫穿每一個(gè)高層JSON的鍵值,該鍵值包含了應(yīng)用程序所需的數(shù)據(jù);4、關(guān)鍵字匹配時(shí),與該關(guān)鍵詞相關(guān)的數(shù)據(jù)需要提取和存儲(chǔ)。所有的數(shù)據(jù)暫存在數(shù)組中,最后注入到HTML中顯示給用戶。通過變化的AJAX請(qǐng)求的URL,可以使用相同的功能從服務(wù)器獲取不同的數(shù)據(jù)集[1]。
3、Ajax請(qǐng)求優(yōu)化。為了實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)在網(wǎng)絡(luò)頁面的顯示速率,提升用戶體驗(yàn)感受,主要從兩個(gè)方面展開說明優(yōu)化方案,涉及歷史頁面的分離保存以及緩存的利用。第一,歷史頁面的分離保存。應(yīng)用程序初始化后,AJAX請(qǐng)求需要一些調(diào)整。每次加載初始頁面的時(shí)候都需要重新加載一遍初始數(shù)據(jù),為了使得AJAX請(qǐng)求得到優(yōu)化,如果選定一個(gè)特定的時(shí)間間隔來加載頁面,可以借助緩存中的數(shù)據(jù)代替每次都從服務(wù)器端請(qǐng)求數(shù)據(jù),完成歷史頁面的重置。首先要?jiǎng)?chuàng)建一個(gè)獨(dú)立的二維數(shù)組用來存儲(chǔ)初始頁面和歷史頁面的數(shù)據(jù),同時(shí)設(shè)定一些重要的變量,用來存儲(chǔ)初始頁面信息、室內(nèi)溫度信息、濕度信息、耗電量等。這些變量只是在應(yīng)用程序啟東時(shí)更新,或者監(jiān)測(cè)用戶更改默認(rèn)的頁面[2]。不同頁面的數(shù)據(jù)分離優(yōu)勢(shì)在于歷史頁面的數(shù)據(jù)在設(shè)定的時(shí)間間隔內(nèi)仍然存在,可以將有用的歷史數(shù)據(jù)應(yīng)用到頁面更新中,而不是每次都回退到初始頁面[3]。第二,應(yīng)用程序緩存。HTML5和Appcache具有緩存特色,最初是為了使web應(yīng)用程序脫機(jī)運(yùn)行。當(dāng)一個(gè)站點(diǎn)第一次被訪問的時(shí)候會(huì)完成每個(gè)文件的下載[4]。為了后續(xù)訪問,文件從緩存加載到內(nèi)存。然而,這個(gè)功能也可以用來減少在線網(wǎng)站應(yīng)用程序加載時(shí)間。有一個(gè)清單文件包含緩存中存儲(chǔ)的每個(gè)文件的路徑,然后添加一個(gè)事件偵聽器用來檢查每次頁面加載時(shí)的清單文件。此偵聽器決定如果清單文件已經(jīng)更新,緩存中已被刪除,那么清單中被指定的數(shù)據(jù)需要重新下載并存儲(chǔ)到緩存中。當(dāng)監(jiān)控頁面無需整體變化,只是一些監(jiān)測(cè)數(shù)據(jù)進(jìn)行更新時(shí),我們就可以調(diào)取緩存中的頁面信息構(gòu)建頁面。
三、總結(jié)
本文對(duì)智能家居監(jiān)測(cè)流程進(jìn)行了簡單概述,主要針對(duì)實(shí)時(shí)數(shù)據(jù)監(jiān)測(cè)的問題進(jìn)行了分析,找出傳統(tǒng)監(jiān)測(cè)模式下的不足,基于Ajax技術(shù)采取局部刷新策略,設(shè)定了實(shí)時(shí)數(shù)據(jù)監(jiān)測(cè)方案,減輕了服務(wù)器負(fù)載,提升了數(shù)據(jù)顯示效率。同時(shí)引入緩存機(jī)制,降低了頁面請(qǐng)求次數(shù)和數(shù)據(jù)請(qǐng)求量,降低了網(wǎng)絡(luò)傳輸流量。智能家居系統(tǒng)是融合了多種技術(shù)的綜合項(xiàng)目,能為用戶提供更加便捷、舒適的居住環(huán)境,隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,基于移動(dòng)終端的監(jiān)控是未來發(fā)展方向,如何為移動(dòng)終端設(shè)定統(tǒng)一的接口是智能家居研究中十分重要的。
參 考 文 獻(xiàn)
[1] C. McDonough, The Pyramid Web Application Development Framework:Version 1. 0, Agendaless Consulting, 2011.
[2].JessejmaesGarrett著.Ajxa:ANewAPproachtowebApplieations.2005.2
[3] Robert.DHof.Ajax如何編織速度更快的網(wǎng)絡(luò).商業(yè)周刊.2005年,11期
[4] B.Lawson and R.Shartp, Introducing HTML5, Berkeley, CA: Pearson Education, 2010.