摘要:歸納為兩方面對服務(wù)器頻繁調(diào)用客戶體驗優(yōu)化網(wǎng)絡(luò)問題錯誤提醒對服務(wù)器頻繁調(diào)用對于現(xiàn)有的網(wǎng)站或普遍存在這些問題,這些問題對服務(wù)器的影響很大,對于處理復雜請求請求量過多的直接導致服務(wù)器癱瘓案例對大數(shù)據(jù)進行查詢報錯就上傳日志大家都在點提交遇到這些問題
對服務(wù)器頻繁調(diào)用歸納為兩方面: 對服務(wù)器頻繁調(diào)用、客戶體驗優(yōu)化(網(wǎng)絡(luò)問題/錯誤提醒)
客戶體驗優(yōu)化(網(wǎng)絡(luò)問題/錯誤提醒)對于現(xiàn)有的網(wǎng)站或webapp普遍存在這些問題,這些問題對服務(wù)器的影響很大,對于處理復雜請求、請求量過多的直接導致服務(wù)器癱瘓
案例:
對大數(shù)據(jù)進行查詢
報錯就上傳日志
大家都在點提交
...
遇到這些問題,程序員比較頭疼,可能很多人意識到了問題,但卻不好解決,原因是會造成業(yè)務(wù)代碼混亂、測試難度較大、容易出bug等
如何解決主要是圍繞網(wǎng)絡(luò)問題、錯誤提醒所要體現(xiàn)的客戶體驗優(yōu)化
案例:客戶網(wǎng)絡(luò)不明,無法排查網(wǎng)絡(luò)問題
相同錯誤不要頻繁提醒客戶
...
推薦 js-trigger,js-trigger是一個JavaScript觸發(fā)器插件,可通過指定頻次、指定時間內(nèi)觸發(fā)指定的處理函數(shù)
支持UMD(AMD/CMD/CommonJS/ESModule)
支持Node
支持Browser
使用場景:限制日志頻繁上傳、限制ajax頻繁調(diào)用、錯誤提醒、網(wǎng)絡(luò)狀態(tài)檢測等
js-trigger 案例三種引入方式
import Trigger from "js-trigger"; //ES6引入 var Trigger = require("js-trigger").default; //ES5引入 window.Trigger; //browser引入
案例1:限制查詢按鈕頻次,條件是3s內(nèi)最多發(fā)一次請求
//創(chuàng)建一個觸發(fā)器 var trigger = Trigger.create({ name: "限制查詢頻繁調(diào)用", //frequency: 5, //點擊5次觸發(fā) interval: 3, //點擊超過3s觸發(fā),3s內(nèi)不觸發(fā) firstTrigger: true //首次立刻觸發(fā) }); var btnQuery = $("#btnQuery"); /** * 觸發(fā)器監(jiān)聽事件處理函數(shù) * @param {Object} state - 當前狀態(tài) * @param {number} handlerCounter - 觸發(fā)次數(shù)統(tǒng)計 * @param {Date} startTime - 開始時間 * @param {Date} endTime - 結(jié)束時間 * @param {number} duration - 持續(xù)時長(ms) * @param {Object[]} data - 追加數(shù)據(jù),每次check進行傳入 */ trigger.on(function(state){ $.get("查詢數(shù)據(jù)api接口", function(res){ //do something }); }); //點擊查詢事件 btnQuery.click(function(ev){ //檢查觸發(fā)器,條件成立會即可觸發(fā)處理函數(shù) trigger.check("每次check傳入的數(shù)據(jù)"); });
案例2:上傳客戶網(wǎng)絡(luò)數(shù)據(jù),條件是30s內(nèi)或執(zhí)行10次內(nèi)最多上傳一次數(shù)據(jù)且最多觸發(fā)10次
//創(chuàng)建一個觸發(fā)器 var trigger = Trigger.create({ interval: 30, //超過30s觸發(fā) frequency: 10, //點擊10次觸發(fā) maxHandlerFrequency: 10, //最多觸發(fā)10次 firstTrigger: true //首次立刻觸發(fā) }); /** * 觸發(fā)器監(jiān)聽事件處理函數(shù) * @param {Object} state - 當前狀態(tài) * @param {number} handlerCounter - 觸發(fā)次數(shù)統(tǒng)計 * @param {Date} startTime - 開始時間 * @param {Date} endTime - 結(jié)束時間 * @param {number} duration - 持續(xù)時長(ms) * @param {Object[]} data - 追加數(shù)據(jù),每次check進行傳入 */ trigger.on(function(state){ //do something }); //每秒檢測網(wǎng)絡(luò) setTimeout(function(){ //檢測網(wǎng)絡(luò) checkNetwork(function(data){ //檢查觸發(fā)器,條件成立會即可觸發(fā)處理函數(shù) trigger.check(); }); }, 1000);js-trigger相關(guān)地址
主頁面
文檔
測試頁面
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/88621.html
最近公有云不夠太平,在阿里云故障、AWS故障、谷歌云故障之后,騰訊云也掛了……,幾大公有云頻頻出現(xiàn)故障,一時讓很多上云的小伙伴們無從選擇,還能有靠譜點的嗎?其實,關(guān)于公有云的故障,早就引起了很多不滿,一度成為人們上云的最大障礙。這些都是公有云里的大牌,市場地位顯赫,技術(shù)過硬,也是不差錢的金主,但仍逃不過故障的魔掌,其它的公有云就更不用提了,只是市場份額不大,出了故障也不像這幾個更受人們關(guān)注罷了。這...
監(jiān)控什么 今天我們來聊聊如何監(jiān)控你的應(yīng)用程序,這里的監(jiān)控說的不是讓我們?nèi)ケO(jiān)控用戶,而是監(jiān)控應(yīng)用的健康狀態(tài),什么是健康狀態(tài)呢?對于后端的同學來說,在微服務(wù)的架構(gòu)下,每個子服務(wù)是否正常工作、返回的結(jié)果是否滿足預期,這些就算是健康狀態(tài),再舉個例子,你的臺式機,對于操作系統(tǒng)來說,每個硬件是否能正常的工作、工作的穩(wěn)定性,這些都是需要關(guān)注的健康狀態(tài)。 既然我們關(guān)心健康狀態(tài),那么我們該如何衡量一個設(shè)備的健康狀態(tài)...
摘要:日志規(guī)范一般前端開發(fā)同學,對日志其實不太敏感,畢竟前端大多數(shù)情況下,不太關(guān)心日志。本文主要梳理了目前我們團隊在開發(fā)中日志方面存在的問題,以及通過統(tǒng)一日志規(guī)范,希望達到什么樣的效果。日志格式字段日志格式統(tǒng)一采用,便于解析處理。nodejs 日志規(guī)范 一般前端開發(fā)同學,對日志其實不太敏感,畢竟前端大多數(shù)情況下,不太關(guān)心日志。即使有,也可能調(diào)用一些第三方的統(tǒng)計,比如百度統(tǒng)計或者別的等。在 Node...
摘要:與大數(shù)據(jù)體系交互上報運行統(tǒng)計數(shù)據(jù)自帶了運行結(jié)果的統(tǒng)計數(shù)據(jù),我們希望把這些統(tǒng)計數(shù)據(jù)上報到元數(shù)據(jù)系統(tǒng),作為的過程元數(shù)據(jù)存儲下來?;谖覀兊拈_發(fā)策略,不要把有贊元數(shù)據(jù)系統(tǒng)的嵌入源碼,而是在之外獲取,截取出打印的統(tǒng)計信息再上報。一、需求 有贊大數(shù)據(jù)技術(shù)應(yīng)用的早期,我們使用 Sqoop 作為數(shù)據(jù)同步工具,滿足了 MySQL 與 Hive 之間數(shù)據(jù)同步的日常開發(fā)需求。 隨著公司業(yè)務(wù)發(fā)展,數(shù)據(jù)同步的場景越...
閱讀 1611·2021-11-04 16:10
閱讀 3009·2021-09-30 09:48
閱讀 2896·2019-08-29 11:31
閱讀 1637·2019-08-28 18:22
閱讀 3287·2019-08-26 13:44
閱讀 1377·2019-08-26 13:42
閱讀 2908·2019-08-26 10:20
閱讀 818·2019-08-23 17:00