修复在HTTP/1.x下开多个窗口访问非常慢的问题

This commit is contained in:
GoEdgeLab
2023-04-19 21:03:46 +08:00
parent f65d0ed970
commit 39f8059600
7 changed files with 21 additions and 9 deletions

View File

@@ -10,9 +10,9 @@ import (
// 启动IP库 // 启动IP库
func (this *AdminNode) startIPLibrary() { func (this *AdminNode) startIPLibrary() {
logs.Println("NODE", "initializing ip library ...") logs.Println("[NODE]initializing ip library ...")
err := iplibrary.InitDefault() err := iplibrary.InitDefault()
if err != nil { if err != nil {
logs.Println("NODE", "initialize ip library failed: "+err.Error()) logs.Println("[NODE]initialize ip library failed: "+err.Error())
} }
} }

View File

@@ -15,6 +15,9 @@ func (this *CheckAction) RunPost(params struct {
HasError bool HasError bool
IsUpdated bool IsUpdated bool
}) { }) {
var isStream = this.Request.ProtoMajor >= 2
this.Data["isStream"] = isStream
var maxTries = 10 var maxTries = 10
for i := 0; i < maxTries; i++ { for i := 0; i < maxTries; i++ {
resp, err := this.RPC().NodeTaskRPC().ExistsNodeTasks(this.AdminContext(), &pb.ExistsNodeTasksRequest{ resp, err := this.RPC().NodeTaskRPC().ExistsNodeTasks(this.AdminContext(), &pb.ExistsNodeTasksRequest{
@@ -26,7 +29,7 @@ func (this *CheckAction) RunPost(params struct {
} }
// 如果没有数据变化,继续查询 // 如果没有数据变化,继续查询
if i < maxTries-1 && params.IsUpdated && resp.ExistTasks == params.IsDoing && resp.ExistError == params.HasError { if i < maxTries-1 && params.IsUpdated && resp.ExistTasks == params.IsDoing && resp.ExistError == params.HasError && isStream {
time.Sleep(3 * time.Second) time.Sleep(3 * time.Second)
continue continue
} }

View File

@@ -15,6 +15,9 @@ func (this *CheckAction) RunPost(params struct {
HasError bool HasError bool
IsUpdated bool IsUpdated bool
}) { }) {
var isStream = this.Request.ProtoMajor >= 2
this.Data["isStream"] = isStream
var maxTries = 10 var maxTries = 10
for i := 0; i < maxTries; i++ { for i := 0; i < maxTries; i++ {
resp, err := this.RPC().DNSTaskRPC().ExistsDNSTasks(this.AdminContext(), &pb.ExistsDNSTasksRequest{}) resp, err := this.RPC().DNSTaskRPC().ExistsDNSTasks(this.AdminContext(), &pb.ExistsDNSTasksRequest{})
@@ -24,7 +27,7 @@ func (this *CheckAction) RunPost(params struct {
} }
// 如果没有数据变化,继续查询 // 如果没有数据变化,继续查询
if i < maxTries-1 && params.IsUpdated && resp.ExistTasks == params.IsDoing && resp.ExistError == params.HasError { if i < maxTries-1 && params.IsUpdated && resp.ExistTasks == params.IsDoing && resp.ExistError == params.HasError && isStream {
time.Sleep(3 * time.Second) time.Sleep(3 * time.Second)
continue continue
} }

View File

@@ -2312,7 +2312,9 @@ window.Tea.Action = function (action, params) {
.then(function () { .then(function () {
// console.log("done"); // console.log("done");
if (typeof (_doneFn) == "function") { if (typeof (_doneFn) == "function") {
setTimeout(function () {
_doneFn.call(Tea.Vue, {}); _doneFn.call(Tea.Vue, {});
})
} }
}); });
}; };

View File

@@ -117,6 +117,7 @@ Tea.context(function () {
if (!Tea.Vue.teaCheckNodeTasks) { if (!Tea.Vue.teaCheckNodeTasks) {
return return
} }
let isStream = false
this.$post("/clusters/tasks/check") this.$post("/clusters/tasks/check")
.params({ .params({
isDoing: this.doingNodeTasks.isDoing ? 1 : 0, isDoing: this.doingNodeTasks.isDoing ? 1 : 0,
@@ -128,11 +129,12 @@ Tea.context(function () {
this.doingNodeTasks.isDoing = resp.data.isDoing this.doingNodeTasks.isDoing = resp.data.isDoing
this.doingNodeTasks.hasError = resp.data.hasError this.doingNodeTasks.hasError = resp.data.hasError
this.doingNodeTasks.isUpdated = true this.doingNodeTasks.isUpdated = true
isStream = resp.data.shouldWait
}) })
.done(function () { .done(function () {
this.$delay(function () { this.$delay(function () {
this.loadNodeTasks() this.loadNodeTasks()
}, 5000) }, isStream ? 5000 : 30000)
}) })
} }
@@ -156,6 +158,7 @@ Tea.context(function () {
if (!Tea.Vue.teaCheckDNSTasks) { if (!Tea.Vue.teaCheckDNSTasks) {
return return
} }
let isStream = false
this.$post("/dns/tasks/check") this.$post("/dns/tasks/check")
.params({ .params({
isDoing: this.doingDNSTasks.isDoing ? 1 : 0, isDoing: this.doingDNSTasks.isDoing ? 1 : 0,
@@ -167,11 +170,12 @@ Tea.context(function () {
this.doingDNSTasks.isDoing = resp.data.isDoing this.doingDNSTasks.isDoing = resp.data.isDoing
this.doingDNSTasks.hasError = resp.data.hasError this.doingDNSTasks.hasError = resp.data.hasError
this.doingDNSTasks.isUpdated = true this.doingDNSTasks.isUpdated = true
isStream = resp.data.isStream
}) })
.done(function () { .done(function () {
this.$delay(function () { this.$delay(function () {
this.loadDNSTasks() this.loadDNSTasks()
}, 3000) }, isStream ? 5000 : 30000)
}) })
} }

View File

@@ -5,7 +5,7 @@
<form method="post" class="ui form" data-tea-action="$" data-tea-success="success"> <form method="post" class="ui form" data-tea-action="$" data-tea-success="success">
<table class="ui table definition selectable"> <table class="ui table definition selectable">
<tr> <tr>
<td>是否启用</td> <td>启用HTTP</td>
<td> <td>
<div class="ui checkbox"> <div class="ui checkbox">
<input type="checkbox" name="isOn" value="1" v-model="serverConfig.http.on"/> <input type="checkbox" name="isOn" value="1" v-model="serverConfig.http.on"/>

View File

@@ -5,7 +5,7 @@
<form method="post" data-tea-action="$" data-tea-success="success" class="ui form"> <form method="post" data-tea-action="$" data-tea-success="success" class="ui form">
<table class="ui table definition selectable"> <table class="ui table definition selectable">
<tr> <tr>
<td>是否启用</td> <td>启用HTTPS</td>
<td> <td>
<div class="ui checkbox"> <div class="ui checkbox">
<input type="checkbox" name="isOn" value="1" v-model="serverConfig.https.on"/> <input type="checkbox" name="isOn" value="1" v-model="serverConfig.https.on"/>