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