• <ul id="k6mek"><pre id="k6mek"></pre></ul>
      <ul id="k6mek"></ul>
      <ul id="k6mek"></ul>
    • <blockquote id="k6mek"><fieldset id="k6mek"></fieldset></blockquote>
    • <samp id="k6mek"><tbody id="k6mek"></tbody></samp><ul id="k6mek"><tbody id="k6mek"></tbody></ul>
      <th id="k6mek"></th>
    • <samp id="k6mek"></samp>
    • 如何更加高效的開發(fā)微信公眾

      在談更高性能的微信公眾平臺接口開發(fā)之前,我們先了解下微信開發(fā)的基礎(chǔ)。微信公眾平臺官網(wǎng)的解釋是:公眾平臺開發(fā)接口提供與用戶進行消息交互、自定義菜單交互的能力。對于已接入的第三方接口,當用戶發(fā)送消息時,微信會推送至第三方服務(wù)器。以上就是微信公眾平臺的開發(fā)流程,很多人因不明白而使開發(fā)受阻。


      用戶主動發(fā)送的消息分成普通消息、事件消息、語音識別結(jié)果。普通消息包含文本、圖片、語音、視頻、位置、鏈接等多維度消息,也是開發(fā)者們最常用的。事件消息包含關(guān)注、取消關(guān)注、掃描二維碼參數(shù)、上報地理位置、自定義菜單(點擊、跳轉(zhuǎn))監(jiān)控等。整個消息按標準XML格式進行傳遞,所以開發(fā)人員可以用任何語言進行代碼開發(fā)。在大型項目中會涉及轉(zhuǎn)發(fā)處理。消息處理主要指的是被動接收,以及靠高級接口進行主動發(fā)送、高級群發(fā)等。針對這塊,不久前微信已推出了模板消息功能。微信在消息處理上的形態(tài)已基本形成。



      用戶處理可以根據(jù)OpenID獲取用戶信息,通過Auth接口進行網(wǎng)頁授權(quán),只要在微信瀏覽器中即可獲得用戶信息,朋友圈分享的一些功能開發(fā)主要依賴此接口。消息對開發(fā)人員來說就是指令和關(guān)鍵詞,程序主要用于處理各種指令,并返回對應(yīng)的數(shù)據(jù),該邏輯使微信開發(fā)更加簡單,準入門檻更低。微信的發(fā)展也帶來了大量的數(shù)據(jù)存儲及數(shù)據(jù)交互,特別是對于擁有很多商戶的開發(fā)商來說。



      數(shù)據(jù)存儲與快速查詢



      微信交互完全靠OpenID來進行用戶識別,在標準XML中(FromUserName),建議開發(fā)者在數(shù)據(jù)庫中建立一個與OpenID對應(yīng)的表,該表只做關(guān)系處理,粉絲相關(guān)的數(shù)據(jù)則使用單獨的表去存儲。粉絲表的操作非常多,用戶關(guān)注時要插入,取消關(guān)注時要刪除。



      在一些現(xiàn)場活動中遇到大量用戶加入時,如果沒有經(jīng)過優(yōu)化,服務(wù)器基本會崩潰,此時要用數(shù)據(jù)庫分表解決方案。拿MySQL來說,一般建議一張表存儲500萬數(shù)據(jù)(多用戶系統(tǒng)),否則高并發(fā)情況下數(shù)據(jù)庫壓力會非常大。另外,比較重要的就是微信交互數(shù)據(jù),微信公眾平臺服務(wù)器只提供5天的用戶交互信息供運營者查詢。



      微信在做架構(gòu)時已意識到這一點,該項不能一直存儲供用戶查詢,否則服務(wù)器架構(gòu)扛不住。從我們公司的角度來看,一個公眾號平均有1000個粉絲; 萬個公眾號,6000萬粉絲,每天10%的用戶會發(fā)送至少一條消息。也就是說,有600萬的消息存儲量,微信580萬公眾號的數(shù)據(jù)壓力可想而知。即便如此,對于我們這樣的商業(yè)公司來說,再大的數(shù)據(jù)量也要存儲,因為我們需要更多的用戶數(shù)據(jù)為商家的發(fā)展提供數(shù)據(jù)分析和數(shù)據(jù)模型?,F(xiàn)階段我們的處理方案是:近期數(shù)據(jù)實時查詢 、歷史數(shù)據(jù)異步查詢 、數(shù)據(jù)庫采用分布式。



      近期數(shù)據(jù)實時查詢



      將1~2個月的數(shù)據(jù)存儲在實時數(shù)據(jù)庫中,提供分布式解決方案,保證插入、查詢的性能。



      歷史數(shù)據(jù)異步查詢



      暫時將數(shù)據(jù)從熱點數(shù)據(jù)庫轉(zhuǎn)移到專門的數(shù)據(jù)分析服務(wù)器,只用來提供查詢服務(wù),可借助一些搜索查詢,利用數(shù)據(jù)分析軟件進行提煉與大數(shù)據(jù)挖掘。



      數(shù)據(jù)庫分布式



      預(yù)估數(shù)據(jù)量比較大的內(nèi)容,采用分布式存儲,保證數(shù)據(jù)庫的高性能服務(wù)。



      實例解析



      “分享有禮”是我們公司2014年七夕節(jié)上線的一個項目,上線兩天,PV數(shù)就達到了200萬,成功領(lǐng)取盒子的用戶達20萬人。該項目源于BMW的“分享至朋友圈,求助好友幫助領(lǐng)取獎品”的活動。技術(shù)評審時我們就意識到這是一個瘋狂的項目。我們將面臨Web、DB、帶寬三項挑戰(zhàn),并且還要與微信服務(wù)器進行大量交互。



      先說微信交互層面,朋友圈分享不需要用戶進行關(guān)注,也不會產(chǎn)生用戶信息交互,比較簡單。但其業(yè)務(wù)邏輯中有個比較可怕的地方,即已領(lǐng)過盒子的用戶,在第二次進入時要記錄該用戶已領(lǐng)取過盒子,同時用戶打開朋友圈(朋友分享的鏈接),點擊協(xié)助后也要對此進行記錄。微信高級接口中有個Auth接口(Scope為snsapi_base),無須用戶授權(quán)就可以獲取用戶OpenID。借此我們的解決方案是用戶每打開一次,我們就去請求一次微信服務(wù)器。然而,這個解決方案帶來的潛在風(fēng)險很大。壓力測試過程中,基本上2000并發(fā)壓力就很大了,我們通過以下方法解決了該問題。



      access_token進行了緩存存儲,這可以減少一次服務(wù)器交互。

      用戶OpenID存儲在瀏覽器Cookie中。程序先判斷瀏覽器Cookie,Cookie中有就不請求,這減少了用戶二次打開時的請求量。

      用戶數(shù)據(jù)存儲的表加上了Memcached這種緩存中間件。



      微信瀏覽器優(yōu)化方案



      在微信公眾平臺開發(fā)中,對微信瀏覽器的了解很重要。微信瀏覽器跟普通瀏覽器沒什么區(qū)別,只是微信在其中做了一定的修改。當一個產(chǎn)品流量比較大時,上述架構(gòu)會解決微信服務(wù)器交互的壓力。所存在的帶寬壓力、Web壓力還是需要靠Web開發(fā)技術(shù)來解決,手機瀏覽器每一個請求都要耗費流量。2G網(wǎng)絡(luò)的用戶也很多,所以該項是微信開發(fā)非常重要的一點。下面是一些優(yōu)化小技巧。



      圖片Sprite把常用的小圖片合并成為一張大圖,減輕多次請求造成的流量浪費。

      CSS、JS合并壓縮推薦Google的工具Minify。

      純CSS、JS壓縮推薦Apache自帶的Gzip模塊。



      所以在進行微信開發(fā)時,用戶較多的情況下,瞬間并發(fā)壓力會比較大。不過作為開發(fā)人員,一定要預(yù)估好自己的產(chǎn)品以后的用戶量和數(shù)據(jù)量。保證產(chǎn)品穩(wěn)定、有效地運行。

      返回觀點列表
      本文標簽:

      相關(guān)專題

      • 電商/商城開發(fā)
        電商/商城開發(fā)

        杭州派迪科技為高端客戶提供商城開發(fā)建設(shè)咨詢策劃,商城官網(wǎng)設(shè)計,商城建設(shè)開發(fā)服務(wù),以國際化視野和標準為基礎(chǔ),為各行業(yè)領(lǐng)軍品牌提供高端商城開發(fā)定制、策劃、設(shè)計、互動與制作

        查看詳情
      • 微信公眾號開發(fā)
        微信公眾號開發(fā)

        杭州派迪科技微信公眾號開發(fā),為全國企業(yè)提供微信公眾號商城、H5、功能系統(tǒng)開發(fā),如您需要找專業(yè)的公眾號開發(fā)團隊,委托第三方公司開發(fā)公眾號菜單及網(wǎng)頁內(nèi)容請聯(lián)系派迪科技

        查看詳情
      • 小程序開發(fā)
        小程序開發(fā)

        杭州派迪科技專業(yè)小程序開發(fā),為企業(yè)提供微信小程序開發(fā),包括小程序商城、小程序應(yīng)用及其他平臺,可根據(jù)客戶需求進行定制開發(fā),提供源代碼,可二次開發(fā),可申請軟件著作權(quán),歡迎咨詢。我們以用戶為中心的程序功能豐富、直觀且性能極佳。我們以清晰的業(yè)務(wù)目標視圖制作您的項目目的地,并確保它支持用戶訪問體驗??稍诳缭O(shè)備上產(chǎn)生無縫的全渠道體驗,應(yīng)用程序具有豐富的 UI/UX、規(guī)范化的數(shù)據(jù)庫和強大的框架,可提供更好性能。

        查看詳情
      • 在線教育
      • APP/應(yīng)用平臺開發(fā)
        APP/應(yīng)用平臺開發(fā)

        杭州派迪科技專業(yè)的app開發(fā)平臺,9年開發(fā)經(jīng)驗,專注app開發(fā)、app軟件開發(fā)、手機app制作為教育行業(yè)、檢修行業(yè)、商城電商系統(tǒng)等APP提供過全程策劃及開發(fā)

        查看詳情

      體驗從溝通開始,讓我們聆聽您的需求!

      開始您的數(shù)字化品牌體驗! 0571-85815193 期待您的來電!

      [ 網(wǎng)站建設(shè)×品牌官網(wǎng)設(shè)計×大策略營銷門戶×微信小程序開發(fā)×微信公眾號開發(fā)]

      網(wǎng)站事業(yè)部產(chǎn)品經(jīng)理

      網(wǎng)站事業(yè)部產(chǎn)品經(jīng)理

      免費獲取項目策劃

      項目開發(fā)部產(chǎn)品經(jīng)理

      項目開發(fā)部產(chǎn)品經(jīng)理

      免費獲取項目策劃

      我們正使用 cookies 來改善您的訪問體驗

      派迪科技非常重視您的個人隱私,當您訪問我們的網(wǎng)站www.bmwdream.cn時,請同意使用所有cookies 。

      如果您想詳細了解我們?nèi)绾问褂胏ookies請訪問我們的 《隱私政策》

      Cookie 偏好

      如果您想詳細了解我們?nèi)绾问褂胏ookie請訪問我們的 《隱私政策》

      管理cookie偏好

      基本 cookies

      始終允許

      這些 cookies 是網(wǎng)站運行所必需的,不能在我們的系統(tǒng)中關(guān)閉。它們通常僅針對您所做的相當于服務(wù)請求的操作而設(shè)置,例如設(shè)置您的隱私首選項、登錄或填寫表格。您可以將瀏覽器設(shè)置為阻止或提醒您有關(guān)這些 cookies 的信息,但網(wǎng)站的某些部分將無法運行。這些 cookies 不存儲任何個人身份信息。

      性能 cookies

      始終允許
      這些 cookies 使我們能夠計算訪問量和流量來源,以便我們可以衡量和改進我們網(wǎng)站的性能。它們幫助我們了解哪些頁面受歡迎和不受歡迎,并了解訪問者如何在網(wǎng)站上移動。這些 cookies 收集的所有信息都是匯總的,而且是匿名的。如果您不允許這些 cookies,我們將不知道您何時訪問了我們的網(wǎng)站,也無法監(jiān)控其性能。

      功能性 cookies

      這些 cookies 收集信息用于分析和個性化您的定向廣告體驗。您可以使用此撥動開關(guān)來行使選擇不獲取個人信息的權(quán)利。如果您選擇關(guān)閉,我們將無法向您提供個性化廣告,也不會將您的個人信息交給任何第三方。

      定位 Cookies

      這些 cookies 可能由我們的廣告合作伙伴通過我們的網(wǎng)站設(shè)置。這些公司可能會使用它們來建立您的興趣檔案,并在其他網(wǎng)站上向您展示相關(guān)廣告。它們不直接存儲個人信息,而是基于唯一標識您的瀏覽器和互聯(lián)網(wǎng)設(shè)備。如果您不允許使用這些 cookie,您將體驗到較少針對性的廣告。
      • <ul id="k6mek"><pre id="k6mek"></pre></ul>
        <ul id="k6mek"></ul>
        <ul id="k6mek"></ul>
      • <blockquote id="k6mek"><fieldset id="k6mek"></fieldset></blockquote>
      • <samp id="k6mek"><tbody id="k6mek"></tbody></samp><ul id="k6mek"><tbody id="k6mek"></tbody></ul>
        <th id="k6mek"></th>
      • <samp id="k6mek"></samp>