摘要:隨著智能手機(jī)的普及, 微信等社交APP逐漸取代傳統(tǒng)網(wǎng)站成為公眾獲取新聞、信息及服務(wù)的主要手段。本文提出一種基于微信公眾號(hào)的電子政務(wù)服務(wù)平臺(tái)的設(shè)計(jì)方案, 并進(jìn)行系統(tǒng)設(shè)計(jì);通過使用瀏覽器本地緩存技術(shù)以及CDN技術(shù)對(duì)系統(tǒng)整體性能進(jìn)行優(yōu)化, 提高了用戶訪問響應(yīng)速度以及頁面加載速度。該系統(tǒng)實(shí)現(xiàn)了政務(wù)信息查詢, 并且提供了便攜的政務(wù)服務(wù)功能, 以實(shí)現(xiàn)政務(wù)信息查詢便捷化、行政服務(wù)網(wǎng)絡(luò)化, 確保政務(wù)信息及時(shí)披露, 提高政府部門信息化建設(shè)水平和公共服務(wù)能力。
一、引言
隨著現(xiàn)代計(jì)算機(jī)、網(wǎng)絡(luò)通信等技術(shù)的不斷發(fā)展, 信息化建設(shè)愈加受到各個(gè)政府部門的重視。而傳統(tǒng)的政府網(wǎng)站由于訪問不方便, 相關(guān)政務(wù)、行政服務(wù)信息更新不及時(shí), 導(dǎo)致網(wǎng)站瀏覽量低, 政務(wù)信息披露不及時(shí)。已無法滿足在當(dāng)今快節(jié)奏的生活中, 民眾對(duì)于政務(wù)及行政服務(wù)信息的及時(shí)了解、查詢的需求。在這種形勢下, 智能手機(jī)的發(fā)展和微信等社交平臺(tái)的普及, 為現(xiàn)代政府部門信息化建設(shè)帶來了新的機(jī)遇及挑戰(zhàn)。政務(wù)微信服務(wù)平臺(tái)具有傳統(tǒng)政府網(wǎng)站無可比擬的優(yōu)越性。微信本身的跨平臺(tái)性, 使政務(wù)微信服務(wù)平臺(tái)具有一個(gè)統(tǒng)一入口, 方便管理。利用微信本身的多媒體功能, 使政務(wù)微信服務(wù)平臺(tái)可以提供更豐富的功能, 提高辦事效率。微信以手機(jī)為終端, 使政務(wù)微信服務(wù)平臺(tái)可以真正意義上實(shí)現(xiàn)政務(wù)信息及行政服務(wù)隨處可查, 隨處可得, 簡化了行政服務(wù)流程, 確保了政務(wù)信息的及時(shí)披露。因此, 對(duì)于政務(wù)微信服務(wù)平臺(tái)的研究具有一定的現(xiàn)實(shí)意義。本文基于微信公眾號(hào)設(shè)計(jì)一個(gè)電子政務(wù)服務(wù)平臺(tái)。該平臺(tái)旨在促進(jìn)政府部門信息化建設(shè)的全面、協(xié)調(diào)、可持續(xù)發(fā)展。
二、相關(guān)背景
?。ㄒ唬┪⑿殴娖脚_(tái)
自2012年8月23日正式上線以來, 微信公眾平臺(tái)的宗旨是為用戶創(chuàng)造一種良好的體驗(yàn), 在媒體中創(chuàng)建一種全新的生態(tài)循環(huán)。微信公眾平臺(tái)的賬號(hào)根據(jù)運(yùn)營的目的和運(yùn)營主體的差異性分為以下2種, 一種稱為服務(wù)號(hào), 其運(yùn)營只能由組織來負(fù)責(zé), 這些組織既可以包括盈利為主的企業(yè)、媒體, 也可以包括以非盈利為目的的政府和公益組織, 另一種稱為訂閱號(hào), 其運(yùn)營既可以是組織, 也可以是個(gè)人, 但個(gè)人不能參與運(yùn)營服務(wù)號(hào)。
作為微信公眾平臺(tái)的賬號(hào)類型之一的服務(wù)號(hào)與微型官網(wǎng)相似, 是組織開展微信社交的站點(diǎn), 其宗旨是為廣大用戶提供能夠自定義的多樣化服務(wù), 這種服務(wù)通過自定義的菜單來提供, 菜單與后臺(tái)基于移動(dòng)設(shè)備的網(wǎng)站相互結(jié)合, 與現(xiàn)有的系統(tǒng)進(jìn)行對(duì)接, 從而實(shí)現(xiàn)了服務(wù)的跨平臺(tái)性。
?。ǘ┱?wù)微信技術(shù)方案
通過對(duì)現(xiàn)有的大量的政務(wù)微信公眾號(hào)分析和研究, 發(fā)現(xiàn)現(xiàn)在的政務(wù)微信公眾號(hào)的技術(shù)方案主要依靠微信公眾號(hào)的2大功能來實(shí)現(xiàn)自身的業(yè)務(wù), 分別為:
1、推送圖文消息。該功能需要政務(wù)微信運(yùn)營者使用微信官方的后臺(tái)管理系統(tǒng)對(duì)要推送的圖文信息進(jìn)行編輯, 并完成推送操作。使用該功能, 主要可以實(shí)現(xiàn)將每日的重點(diǎn)新聞、政策實(shí)施和解讀等重要的政務(wù)信息推送給公眾。
2、自定義菜單。該功能在現(xiàn)在的政務(wù)微信的技術(shù)方案中, 是實(shí)現(xiàn)政務(wù)微信絕大部分業(yè)務(wù)功能的主要技術(shù)手段。微信所提供的自定義菜單有2種行為:一是點(diǎn)擊會(huì)推送圖文信息;二是點(diǎn)擊后打開一個(gè)Web頁面。
在現(xiàn)行的技術(shù)方案中, 主要依靠自定義菜單的第2種行為, 通過在微信公眾號(hào)中打開一級(jí)Web頁面, 并在一級(jí)Web頁面中設(shè)置鏈接鏈到二級(jí)Web頁面, 乃至三級(jí)Web頁面, 并使用Web頁面來完成政務(wù)微信的各種功能。通過這種機(jī)制, 開發(fā)者可以將微信公眾號(hào)實(shí)質(zhì)性地建設(shè)成一個(gè)Web網(wǎng)站, 或者說是一個(gè)Web應(yīng)用, 并將微信客戶端實(shí)質(zhì)性地轉(zhuǎn)變成微信瀏覽器。微信所提供的這種將微信公眾號(hào)轉(zhuǎn)變?yōu)閃eb網(wǎng)站、Web應(yīng)用的機(jī)制, 使得開發(fā)者可以在微信公眾號(hào)的基礎(chǔ)平臺(tái)之上, 通過使用傳統(tǒng)Web開發(fā)方式和技術(shù)對(duì)微信公眾號(hào)進(jìn)行二次開發(fā), 從而極大地?cái)U(kuò)展了微信公眾號(hào)所能提供的服務(wù), 豐富了微信公眾號(hào)的功能。
本文基于上述技術(shù)方案, 通過微信提供的自定義菜單, 將本平臺(tái)建設(shè)為一個(gè)Web網(wǎng)站、Web應(yīng)用, 并使用Web開發(fā)技術(shù)和Web頁面的方式, 實(shí)現(xiàn)本平臺(tái)的所有主體功能。
三、系統(tǒng)設(shè)計(jì)
?。ㄒ唬┫到y(tǒng)需求設(shè)計(jì)
基于微信公眾號(hào)的政務(wù)服務(wù)平臺(tái)系統(tǒng)的建設(shè)是為了改變我國政務(wù)信息披露、更新不及時(shí), 公眾查詢政務(wù)、公共服務(wù)等信息不方便的現(xiàn)狀。實(shí)現(xiàn)政務(wù)信息及行政服務(wù)隨處可查, 隨處可得。本系統(tǒng)以微信公眾號(hào)為平臺(tái), 集政務(wù)信息、行政服務(wù)查詢、事務(wù)辦理、費(fèi)用繳納等功能為一體, 利用現(xiàn)代信息技術(shù)作為支撐, 為政府部門在加快信息化建設(shè)、及時(shí)公開政務(wù)信息、提高部門工作效率等方面發(fā)揮作用。
?。ǘ┫到y(tǒng)架構(gòu)設(shè)計(jì)
引入微信后, 微信將成為電子政務(wù)系統(tǒng)的平臺(tái)和統(tǒng)一入口。微信的開發(fā)模式可以將系統(tǒng)的功能和服務(wù)引入到特定的服務(wù)器來實(shí)現(xiàn)。可以認(rèn)為, 引入微信是對(duì)已有電子政務(wù)系統(tǒng)前端的部分改造, 新的微信政務(wù)服務(wù)平臺(tái)可以方便快捷地與現(xiàn)有的電子政務(wù)系統(tǒng)進(jìn)行無縫銜接。引入微信后的電子政務(wù)系統(tǒng)架構(gòu)如圖1所示。
圖1 引入微信后的電子政務(wù)系統(tǒng)架構(gòu)
?。ㄈ┫到y(tǒng)功能設(shè)計(jì)
本系統(tǒng)功能由3部分組成, 分別為:政務(wù)公開、事務(wù)辦理和繳納費(fèi)用。
1、政務(wù)公開
政務(wù)公開模塊是政府部門通過本平臺(tái)實(shí)施“問政于民”政策的一個(gè)窗口, 即有選擇性地將政府部門的一些日常政務(wù)信息向廣大民眾公開, 并接受民眾的監(jiān)督。參與政務(wù)公開的用戶主體為部門用戶和民眾。政務(wù)公開由新聞動(dòng)態(tài)、規(guī)劃計(jì)劃、重大項(xiàng)目、社會(huì)公益、統(tǒng)計(jì)數(shù)據(jù)和人事信息等子欄目組成。這些政務(wù)信息都是由所在部門用戶負(fù)責(zé)編輯完成的。其用例圖如圖2所示。
圖2 政務(wù)公開用例圖
2、 事務(wù)辦理
事務(wù)辦理是政府部門和廣大民眾的一個(gè)橋梁, 為廣大民眾提供了事務(wù)辦理流程查詢和辦理等功能, 更好地提升政府部門的公共服務(wù)能力。該模塊中主要包括5個(gè)子模塊, 即發(fā)布服務(wù)章程和事宜、查看服務(wù)章程和事宜、請(qǐng)求服務(wù)、辦理服務(wù)請(qǐng)求和查看辦理結(jié)果。其中, 由部門用戶負(fù)責(zé)完成的模塊是發(fā)布服務(wù)章程和辦理服務(wù)請(qǐng)求, 而民眾可以查看服務(wù)章程, 請(qǐng)求服務(wù)并查看請(qǐng)求的最終處理結(jié)果。其用例圖如圖3所示。
圖3 事務(wù)辦理用例圖
3、繳納費(fèi)用
傳統(tǒng)的政務(wù)微信公眾號(hào)主要以信息發(fā)布、政務(wù)信息查詢功能為主。隨著微信團(tuán)隊(duì)對(duì)于各種認(rèn)證類型的微信服務(wù)號(hào)和訂閱號(hào)微信支付功能的開通, 為政務(wù)微信公眾號(hào)帶來新的活力和機(jī)遇。通過微信支付接口實(shí)現(xiàn)繳納費(fèi)用功能是本系統(tǒng)的特色功能。應(yīng)用于不同的場景, 可以完成不同的功能, 諸如:水電費(fèi)繳納、交通罰款繳納等, 從而能夠真正實(shí)現(xiàn)完整的在線服務(wù)。政務(wù)微信的在線支付功能及其支付方式的多樣化是其區(qū)別于傳統(tǒng)的電子化公共服務(wù)平臺(tái)的主要特征之一。其擴(kuò)充了政務(wù)微信公眾號(hào)的功能, 并解決某些政府部門的收費(fèi)項(xiàng)目收費(fèi)困難等問題, 同時(shí)極大地方便了公眾繳納相關(guān)費(fèi)用, 提高了政府部門辦事效率。該模塊主要包括2個(gè)子模塊:發(fā)布繳納費(fèi)用項(xiàng)目和繳納費(fèi)用。部門用戶通過后臺(tái)系統(tǒng)的發(fā)布繳納費(fèi)用項(xiàng)目模塊發(fā)布收費(fèi)項(xiàng)目。公眾通過繳納費(fèi)用模塊查看需要繳費(fèi)的事項(xiàng)并通過微信支付繳納費(fèi)用。
四、系統(tǒng)實(shí)現(xiàn)
(一)頁面設(shè)計(jì)
本平臺(tái)的后臺(tái)程序使用Java開發(fā), 保證平臺(tái)的穩(wěn)定性與可靠性。前臺(tái)頁面基于HTML5、CSS3、Java 以及Ajax技術(shù)進(jìn)行設(shè)計(jì)和開發(fā)。在保證功能性的同時(shí), 提升頁面的美觀程度, 并對(duì)用戶操作流程進(jìn)行優(yōu)化, 保證本平臺(tái)的用戶友好性, 使本平臺(tái)簡潔、易使用。平臺(tái)的主界面為微信公眾號(hào)頁面, 通過設(shè)置微信公眾號(hào)的自定義菜單以及二級(jí)自定義菜單的跳轉(zhuǎn)鏈接, 來實(shí)現(xiàn)平臺(tái)的各個(gè)功能頁面。平臺(tái)的功能頁面主要有:新聞動(dòng)態(tài)、重大項(xiàng)目、統(tǒng)計(jì)數(shù)據(jù)、事務(wù)辦理、繳納費(fèi)用等。部分頁面如圖4所示。
圖4 部分頁面展示
?。ǘI(yè)務(wù)實(shí)現(xiàn)
平臺(tái)的整體業(yè)務(wù)由3部分組成:
1、政務(wù)公開。部門員工登錄PC端管理系統(tǒng)后, 進(jìn)入信息發(fā)布頁面, 選擇待發(fā)布信息的欄目并填寫信息的標(biāo)題。完成標(biāo)題的填寫后, 即可填寫信息的正文部分。如果正文部分需要插入圖片, 則員工需要將待插入的圖片上傳到系統(tǒng)中。上傳過程中, 系統(tǒng)會(huì)對(duì)上傳圖片的大小、格式等信息進(jìn)行驗(yàn)證, 如果驗(yàn)證通過, 則提示上傳成功, 并可以將該圖片插入到政務(wù)部分;如果驗(yàn)證失敗, 則彈出驗(yàn)證失敗提示信息窗口, 并要求員工修改后重新上傳。最后保存信息并提交給系統(tǒng)。信息發(fā)布成功后, 公眾就可以在公眾號(hào)里相應(yīng)的Web頁面查看信息。信息發(fā)布流程如圖5所示。
圖5 發(fā)布信息流程圖
2、事務(wù)辦理。民眾在向政府部門提出事務(wù)辦理請(qǐng)求時(shí), 其過程為:首先, 民眾用戶打開請(qǐng)求頁面, 選擇請(qǐng)求服務(wù)的類別, 然后輸入服務(wù)的標(biāo)題, 系統(tǒng)驗(yàn)證該標(biāo)題是否符合規(guī)范, 如果不符合規(guī)范則彈出提示信息, 并讓用戶重新輸入, 如果符合規(guī)范則輸入服務(wù)的詳細(xì)內(nèi)容, 最后提交給系統(tǒng)驗(yàn)證, 如果驗(yàn)證失敗將彈出驗(yàn)證失敗的提示信息, 反之則保存服務(wù)請(qǐng)求, 并返回到公共服務(wù)管理頁面。其流程如圖6所示。
圖6 請(qǐng)求服務(wù)流程圖
公眾除了以上述方式請(qǐng)求服務(wù)外, 也可在公眾號(hào)中發(fā)送文本信息, 如各類咨詢、與公眾號(hào)進(jìn)行互動(dòng)、獲取相關(guān)服務(wù)。平臺(tái)后臺(tái)系統(tǒng)在接收到民眾發(fā)送的文本信息后, 對(duì)其進(jìn)行文本分析, 并提取其中的關(guān)鍵字。后臺(tái)系統(tǒng)根據(jù)提取到的關(guān)鍵字, 在數(shù)據(jù)庫中的關(guān)鍵字匹配規(guī)則表中進(jìn)行檢索。如果檢索失敗, 即系統(tǒng)中沒有關(guān)于該關(guān)鍵字的匹配規(guī)則, 則向用戶發(fā)送一條預(yù)設(shè)的匹配失敗的信息, 包括:關(guān)鍵字匹配失敗信息、幫助信息和熱點(diǎn)問題。如果檢索成功, 則將該關(guān)鍵字所對(duì)應(yīng)的文章或信息發(fā)送給用戶。部門用戶可以通過后臺(tái)系統(tǒng)中的關(guān)鍵字匹配管理模塊新增新的關(guān)鍵字匹配規(guī)則, 并對(duì)現(xiàn)有的關(guān)鍵字匹配規(guī)則進(jìn)行修改和刪除等操作。
3、繳納費(fèi)用。公眾通過點(diǎn)擊繳納費(fèi)用菜單打開繳納費(fèi)用的Web頁面。此時(shí)公眾需要在頁面中輸入繳納費(fèi)用所需的個(gè)人信息。根據(jù)應(yīng)用場景的不同, 所需的個(gè)人信息也不同。比如繳納水電費(fèi), 需要公眾輸入自己的家庭住址、室號(hào)等信息;又比如繳納交通罰款, 需要公眾輸入自己的車牌、車架編號(hào)等信息。通過這些個(gè)人信息, 在系統(tǒng)中對(duì)公眾進(jìn)行標(biāo)識(shí), 從而查詢出公眾需要繳納的金額等信息。本系統(tǒng)在此基礎(chǔ)上, 將上述個(gè)人信息與公眾的微信標(biāo)識(shí)Open Id進(jìn)行綁定, 以方便公眾的再次使用。
公眾提交個(gè)人信息后, 系統(tǒng)根據(jù)這些信息在數(shù)據(jù)庫中查詢待繳費(fèi)事項(xiàng)、金額等信息, 系統(tǒng)將這些信息以及政務(wù)微信的應(yīng)用表示App Id、用戶標(biāo)識(shí)Open Id、簽名Sign等參數(shù)封裝成XML, 并將該XML發(fā)送給微信的統(tǒng)一下單地址, 得到prepay_id, pay Sign等支付參數(shù)。公眾選擇待繳事項(xiàng)后, 進(jìn)入支付頁面。在支付頁面中, 輸入繳納金額后, 點(diǎn)擊支付, 發(fā)起支付請(qǐng)求。微信客戶端接收到支付請(qǐng)求后, 在頁面中調(diào)用JS API接口向微信支付系統(tǒng)請(qǐng)求支付, 并將得到的prepay_id, pay Sign等支付參數(shù)通過HTTPS協(xié)議傳輸給微信支付系統(tǒng)。微信支付系統(tǒng)驗(yàn)證得到的支付參數(shù)的合法性和支付發(fā)起域名的權(quán)限。驗(yàn)證通過后, 將驗(yàn)證結(jié)果返回給微信客戶端, 并要求用戶給予支付授權(quán)。此時(shí)支付頁面上會(huì)要求用戶輸入支付密碼, 用戶確認(rèn)支付并輸入支付密碼后, 微信支付系統(tǒng)驗(yàn)證該授權(quán)并完成支付操作。政務(wù)微信后臺(tái)系統(tǒng)收到支付結(jié)果后, 將支付信息加密存儲(chǔ)在數(shù)據(jù)庫, 以便用戶可以查詢歷史支付記錄, 并且通知微信客戶端, 顯示支付成功頁面, 展示支付信息。繳納費(fèi)用的時(shí)序如圖7所示。
圖7 繳納費(fèi)用時(shí)序圖
五、系統(tǒng)性能優(yōu)化
通過對(duì)現(xiàn)有的大量政務(wù)微信公眾號(hào)以及其他類型公眾號(hào)的技術(shù)方案的分析和研究, 發(fā)現(xiàn)現(xiàn)有的公眾號(hào)都可以視為一種以微信為入口的Web網(wǎng)站或Web應(yīng)用。微信所提供的這種將微信公眾號(hào)轉(zhuǎn)變?yōu)閃eb網(wǎng)站或Web應(yīng)用的機(jī)制, 使得微信公眾號(hào)得以突破微信的限制, 通過Web的方式實(shí)現(xiàn)更多的功能。然而這種方式同樣帶來新的問題。
微信公眾號(hào)是運(yùn)行在微信APP之上的, 微信官方團(tuán)隊(duì)對(duì)微信自身的性能做了優(yōu)化, 諸如信息的發(fā)送和接收、請(qǐng)求的響應(yīng)的方面, 所以在使用微信的基本功能, 諸如聊天、公眾號(hào)中接收?qǐng)D文消息等, 并沒有明顯的延遲感。然而微信官方團(tuán)隊(duì)并沒有, 也沒辦法對(duì)于微信公眾號(hào)中所使用的Web頁面進(jìn)行性能優(yōu)化。而在微信公眾號(hào)中使用Web頁面, 將微信公眾號(hào)建設(shè)成一個(gè)Web網(wǎng)站的技術(shù)方案已是業(yè)界主流的方案。所以本文針對(duì)微信在Web優(yōu)化方面的不足, 對(duì)本平臺(tái)運(yùn)用Web優(yōu)化技術(shù)進(jìn)行性能優(yōu)化, 以減少頁面加載時(shí)間。
?。ㄒ唬┬阅軆?yōu)化方案
1、設(shè)置緩存
微信瀏覽器使用緩存來減少HTTP請(qǐng)求數(shù)量和HTTP響應(yīng)大小。通過對(duì)頁面中靜態(tài)資源使用緩存可以避免重復(fù)加載資源, 提高資源的重復(fù)利用率, 同時(shí)可以減少服務(wù)器通信壓力、提高前端頁面性能。
設(shè)置Expires頭部是啟用緩存最常用的方式之一, 通過設(shè)置HTTP頭部的Expires字段來通知瀏覽器對(duì)于數(shù)據(jù)報(bào)中的數(shù)據(jù)進(jìn)行緩存, 并設(shè)置失效時(shí)間, 在每次請(qǐng)求時(shí)對(duì)其驗(yàn)證, 來規(guī)定瀏覽器的行為:使用緩存數(shù)據(jù)或到服務(wù)器中抓取新的數(shù)據(jù)。然而以這種方式進(jìn)行緩存時(shí), 必須對(duì)服務(wù)器及瀏覽器的時(shí)間進(jìn)行同步, 從而確保Expires頭部中設(shè)定的失效時(shí)間可以正確地運(yùn)行。
通過設(shè)置Cache-Control中的max-age字段的方式來對(duì)數(shù)據(jù)進(jìn)行瀏覽器端的緩存時(shí), 可以避免每次請(qǐng)求時(shí)在瀏覽器與服務(wù)器之間進(jìn)行時(shí)間同步, 不過在HTTP1.1協(xié)議中才可以使用這種方式。
ETag用于檢測微信瀏覽器緩存中的組件是否與服務(wù)器上的組件一致。設(shè)置或移除ETag頭部信息, 會(huì)對(duì)前端頁面的加載速度產(chǎn)生較大影響。在適當(dāng)?shù)那闆r下除ETag頭部可以提升系統(tǒng)整體效率, 避免瀏覽器在本地緩存時(shí), 對(duì)數(shù)據(jù)的重復(fù)性下載。
在政務(wù)微信公眾號(hào)的開發(fā)中對(duì)相關(guān)資源設(shè)置緩存, 可以有效提高公眾在使用政務(wù)公眾號(hào)時(shí)的流暢度, 減少政務(wù)微信公眾號(hào)推送圖文消息時(shí)的響應(yīng)延遲, 并且通過設(shè)置緩存的有效時(shí)間, 定期清理緩存, 可有效避免因?yàn)樵O(shè)置緩存帶來的微信占用內(nèi)存過大所導(dǎo)致的微信加載速度、響應(yīng)速度過慢的問題。
2、使用CDN
由于HTTP協(xié)議的無狀態(tài)特性, 為了在Web系統(tǒng)中存儲(chǔ)用戶信息, 記錄用戶的登錄狀態(tài), 引入了Cookie技術(shù)。Cookie技術(shù)可以在HTTP無狀態(tài)的環(huán)境中, 標(biāo)識(shí)Web系統(tǒng)中的用戶, 然而Cookie技術(shù)的引入使得HTTP請(qǐng)求數(shù)據(jù)大大增加, 增加了HTTP請(qǐng)求響應(yīng)時(shí)間。
在這個(gè)前提下, 有必要減少帶有Cookie信息的HTTP請(qǐng)求數(shù), 以減少整體Web系統(tǒng)的響應(yīng)時(shí)間。將靜態(tài)資源 (圖片、CSS文件、JS文件等) 放在一個(gè)不需要Cookie的獨(dú)立域名之上, 這是優(yōu)化這個(gè)問題的一個(gè)基本思想, 而內(nèi)容分發(fā)網(wǎng)絡(luò) (Content Delivery Network, CDN) 則是基于這個(gè)思想的一個(gè)解決方案。
CDN優(yōu)化了用戶網(wǎng)絡(luò)請(qǐng)求過程, 它根據(jù)當(dāng)前網(wǎng)絡(luò)中, 實(shí)時(shí)的網(wǎng)絡(luò)流量情況, 以及各個(gè)節(jié)點(diǎn)之間的連接速度、負(fù)載狀況和節(jié)點(diǎn)到用戶間的地理位置距離等信息, 將用戶的請(qǐng)求重新導(dǎo)向至于當(dāng)前用戶來說最優(yōu)的節(jié)點(diǎn)。CDN系統(tǒng)通過網(wǎng)絡(luò)定位重定向等技術(shù), 減少了資源請(qǐng)求響應(yīng)時(shí)間, 從而提高資源的加載速度。
通過使用CDN網(wǎng)絡(luò)系統(tǒng), 可以加快政務(wù)微信公眾號(hào)中靜態(tài)資源的加載速度, 提升政務(wù)微信公眾號(hào)的整體性能, 以及公眾的用戶體驗(yàn), 加快政務(wù)公眾號(hào)對(duì)公眾請(qǐng)求的響應(yīng)速度。
?。ǘ┓桨笇?shí)現(xiàn)
1) 通過在系統(tǒng)服務(wù)器中的Apache的配置文件中添加如下內(nèi)容來對(duì)本系統(tǒng)中的圖片、CSS文件、JS文件等靜態(tài)資源啟用微信瀏覽器端的緩存。
用戶在第一次通過公眾號(hào)訪問頁面時(shí), 公眾號(hào)通過微信服務(wù)器向系統(tǒng)服務(wù)器發(fā)出頁面請(qǐng)求。系統(tǒng)服務(wù)器根據(jù)請(qǐng)求報(bào)中的數(shù)據(jù), 返回相應(yīng)頁面的HTML文檔數(shù)據(jù), 以及其中包含的圖片、CSS文件、JS文件等靜態(tài)資源。與此同時(shí), 系統(tǒng)服務(wù)器根據(jù)Apache配置文件中的標(biāo)注, 在返回靜態(tài)資源的報(bào)文的報(bào)頭中, 添加Expires、Cache-Control (Max Age) 、mod_expires、Etag等頭部信息, 通知微信瀏覽器, 對(duì)這些靜態(tài)資源進(jìn)行本地緩存, 并通知瀏覽緩存最大時(shí)間、本地緩存資源與服務(wù)器資源驗(yàn)證方式等。在公眾后續(xù)請(qǐng)求相同頁面時(shí), 瀏覽器驗(yàn)證本地緩存資源是否失效, 同時(shí)向系統(tǒng)服務(wù)器發(fā)出請(qǐng)求, 驗(yàn)證頁面資源是否在緩存期間發(fā)生了改變。如果系統(tǒng)服務(wù)器返回304狀態(tài)碼, 即通知瀏覽器頁面資源無改變, 并且瀏覽器本地資源未過期, 則瀏覽器直接使用本地緩存數(shù)據(jù)渲染頁面。
2、本系統(tǒng)使用CDN技術(shù)來應(yīng)對(duì)網(wǎng)絡(luò)擁塞、命中率低等影響數(shù)據(jù)傳輸效率的問題, 改善頁面請(qǐng)求過程, 提高用戶訪問響應(yīng)速度, 數(shù)據(jù)的傳輸速率、穩(wěn)定性以及命中率。
使用CDN優(yōu)化后的頁面請(qǐng)求過程如下:
(1) 公眾訪問頁面, 微信公眾號(hào)通過微信APP發(fā)出頁面請(qǐng)求, 提供頁面URL。
(2) 微信瀏覽器調(diào)用本地DNS解析庫對(duì)請(qǐng)求里的URL進(jìn)行解析。CDN系統(tǒng)對(duì)域名解析過程進(jìn)行了調(diào)整, 本地解析后得到的是該URL所對(duì)應(yīng)的CNAME記錄。此時(shí)瀏覽器會(huì)對(duì)得到的CNAME記錄再次進(jìn)行解析。
(3) 此次解析后得到CDN專用DNS服務(wù)器的IP地址, 瀏覽器向該IP地址發(fā)出地址解析請(qǐng)求, CDN專用DNS服務(wù)器解析后, 將CDN的緩存服務(wù)器IP地址返回用戶。用戶向CDN的緩存服務(wù)器發(fā)起內(nèi)容URL訪問請(qǐng)求。
(4) CDN的緩存服務(wù)器捕獲用戶的URL訪問請(qǐng)求后, 根據(jù)請(qǐng)求中的URL, 在cache中查找記錄, 得到URL所對(duì)應(yīng)的IP地址。然后服務(wù)器對(duì)該IP地址提交訪問請(qǐng)求, 系統(tǒng)服務(wù)器響應(yīng)訪問請(qǐng)求后, 將所請(qǐng)求的數(shù)據(jù)返回給緩存服務(wù)器。
(5) 緩存服務(wù)器從系統(tǒng)服務(wù)器得到數(shù)據(jù)后, 首先會(huì)本地進(jìn)行緩存, 以備之后請(qǐng)求相同數(shù)據(jù)時(shí)直接返回給客戶端;同時(shí)把獲取的數(shù)據(jù)返回給客戶端, 完成數(shù)據(jù)服務(wù)過程。
(6) 客戶端接收到返回的數(shù)據(jù)后, 渲染頁面, 展示給用戶, 完成整個(gè)頁面請(qǐng)求過程。
(三)對(duì)比測試
從表1本系統(tǒng)與傳統(tǒng)政務(wù)微信公眾號(hào)優(yōu)化前后的對(duì)比數(shù)據(jù)分析可以看出, 在傳統(tǒng)的政務(wù)微信技術(shù)方案的基礎(chǔ)上, 運(yùn)用優(yōu)化技術(shù)對(duì)政務(wù)微信公眾號(hào)的相關(guān)環(huán)節(jié)進(jìn)行優(yōu)化, 可以有效減少政務(wù)微信的響應(yīng)時(shí)間, 提升政務(wù)微信整體性能, 以及公眾在使用政務(wù)微信時(shí)的用戶體驗(yàn)。
表1 本系統(tǒng)與傳統(tǒng)政務(wù)微信公眾號(hào)優(yōu)化前后的對(duì)比數(shù)據(jù)分析/ms
六、結(jié)束語
本文根據(jù)系統(tǒng)的需求分析, 完成了基于微信公眾號(hào)的政務(wù)服務(wù)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)。將該平臺(tái)分為系統(tǒng)管理、政務(wù)公開和公共服務(wù)3個(gè)子系統(tǒng), 實(shí)現(xiàn)政務(wù)信息隨處可查, 行政服務(wù)便捷辦理, 對(duì)確保政務(wù)信息及時(shí)披露, 提高政府部門辦事效率方面具有非常重要的價(jià)值。在實(shí)現(xiàn)功能的基礎(chǔ)上, 本文對(duì)于系統(tǒng)的整體性能進(jìn)行了優(yōu)化。對(duì)于系統(tǒng)中的諸如圖片、CSS文件、JS文件等靜態(tài)資源, 使用瀏覽器本地緩存技術(shù), 加快了靜態(tài)資源的加載速度, 并且使用CDN技術(shù)改善頁面請(qǐng)求過程, 以實(shí)現(xiàn)負(fù)載均衡, 降低網(wǎng)絡(luò)擁塞, 調(diào)高公眾訪問頁面的響應(yīng)速度。
微信已成為現(xiàn)代人不可或缺的社交工具, 將微信應(yīng)用于電子政務(wù)系統(tǒng)當(dāng)中, 既能發(fā)揮微信作為社交工具使用率高、影響范圍廣的優(yōu)點(diǎn), 也可以借助電子政務(wù)系統(tǒng)強(qiáng)大的后臺(tái)支持功能完善政府的服務(wù), 對(duì)更好地推進(jìn)政府工作, 為公眾提供更優(yōu)質(zhì)、更貼心的公共服務(wù)具有重要的意義。
參考文獻(xiàn):略
作者:楚嘉琦 劉從軍