diff --git a/internal/web/actions/default/servers/server/settings/cache/init.go b/internal/web/actions/default/servers/server/settings/cache/init.go
index f7f0bfab..9a814079 100644
--- a/internal/web/actions/default/servers/server/settings/cache/init.go
+++ b/internal/web/actions/default/servers/server/settings/cache/init.go
@@ -17,6 +17,7 @@ func init() {
GetPost("/createPopup", new(CreatePopupAction)).
GetPost("/purge", new(PurgeAction)).
GetPost("/preheat", new(PreheatAction)).
+ Post("/updateRefs", new(UpdateRefsAction)).
EndAll()
})
}
diff --git a/internal/web/actions/default/servers/server/settings/cache/updateRefs.go b/internal/web/actions/default/servers/server/settings/cache/updateRefs.go
new file mode 100644
index 00000000..34178def
--- /dev/null
+++ b/internal/web/actions/default/servers/server/settings/cache/updateRefs.go
@@ -0,0 +1,83 @@
+// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
+
+package cache
+
+import (
+ "encoding/json"
+ "errors"
+ "github.com/TeaOSLab/EdgeAdmin/internal/oplogs"
+ "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
+ "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
+ "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
+)
+
+type UpdateRefsAction struct {
+ actionutils.ParentAction
+}
+
+func (this *UpdateRefsAction) RunPost(params struct {
+ WebId int64
+ RefsJSON []byte
+}) {
+ // 日志
+ defer this.CreateLog(oplogs.LevelInfo, "修改Web %d 的缓存设置", params.WebId)
+
+ this.Data["isUpdated"] = false
+
+ webConfigResp, err := this.RPC().HTTPWebRPC().FindEnabledHTTPWebConfig(this.AdminContext(), &pb.FindEnabledHTTPWebConfigRequest{HttpWebId: params.WebId})
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+ var webConfig = &serverconfigs.HTTPWebConfig{}
+ err = json.Unmarshal(webConfigResp.HttpWebJSON, webConfig)
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+
+ this.Data["webId"] = webConfig.Id
+ this.Data["cacheConfig"] = webConfig.Cache
+
+ // 校验配置
+ var cacheConfig = webConfig.Cache
+ if webConfig == nil {
+ this.Success()
+ }
+
+ var refs = []*serverconfigs.HTTPCacheRef{}
+ err = json.Unmarshal(params.RefsJSON, &refs)
+ if err != nil {
+ this.ErrorPage(errors.New("decode refs json failed: " + err.Error()))
+ return
+ }
+ cacheConfig.CacheRefs = refs
+
+ err = cacheConfig.Init()
+ if err != nil {
+ this.Fail("检查配置失败:" + err.Error())
+ }
+
+ // 去除不必要的部分
+ for _, cacheRef := range cacheConfig.CacheRefs {
+ cacheRef.CachePolicy = nil
+ }
+
+ cacheJSON, err := json.Marshal(cacheConfig)
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+
+ _, err = this.RPC().HTTPWebRPC().UpdateHTTPWebCache(this.AdminContext(), &pb.UpdateHTTPWebCacheRequest{
+ HttpWebId: params.WebId,
+ CacheJSON: cacheJSON,
+ })
+ if err != nil {
+ this.ErrorPage(err)
+ return
+ }
+
+ this.Data["isUpdated"] = true
+ this.Success()
+}
diff --git a/web/public/js/components/server/http-cache-config-box.js b/web/public/js/components/server/http-cache-config-box.js
index be169dab..38988d77 100644
--- a/web/public/js/components/server/http-cache-config-box.js
+++ b/web/public/js/components/server/http-cache-config-box.js
@@ -1,5 +1,5 @@
Vue.component("http-cache-config-box", {
- props: ["v-cache-config", "v-is-location", "v-is-group", "v-cache-policy"],
+ props: ["v-cache-config", "v-is-location", "v-is-group", "v-cache-policy", "v-web-id"],
data: function () {
let cacheConfig = this.vCacheConfig
if (cacheConfig == null) {
@@ -138,7 +138,7 @@ Vue.component("http-cache-config-box", {
缓存条件
-
+
`
diff --git a/web/public/js/components/server/http-cache-refs-box.js b/web/public/js/components/server/http-cache-refs-box.js
index 24b09451..611459f2 100644
--- a/web/public/js/components/server/http-cache-refs-box.js
+++ b/web/public/js/components/server/http-cache-refs-box.js
@@ -42,8 +42,8 @@ Vue.component("http-cache-refs-box", {
缓存时间 |
- |
-
+ |
+
{{cacheRef.minSize.count}}{{cacheRef.minSize.unit}}
- {{cacheRef.maxSize.count}}{{cacheRef.maxSize.unit}}
@@ -54,11 +54,11 @@ Vue.component("http-cache-refs-box", {
状态码:{{cacheRef.status.map(function(v) {return v.toString()}).join(", ")}}
区间缓存
|
-
+ |
和
或
|
-
+ |
{{cacheRef.life.count}} {{timeUnitName(cacheRef.life.unit)}}
不缓存
|
diff --git a/web/public/js/components/server/http-cache-refs-config-box.js b/web/public/js/components/server/http-cache-refs-config-box.js
index b81eda76..03e11652 100644
--- a/web/public/js/components/server/http-cache-refs-config-box.js
+++ b/web/public/js/components/server/http-cache-refs-config-box.js
@@ -1,5 +1,5 @@
Vue.component("http-cache-refs-config-box", {
- props: ["v-cache-refs", "v-cache-config", "v-cache-policy-id"],
+ props: ["v-cache-refs", "v-cache-config", "v-cache-policy-id", "v-web-id"],
mounted: function () {
let that = this
sortTable(function (ids) {
@@ -101,6 +101,14 @@ Vue.component("http-cache-refs-config-box", {
}
})
},
+ disableRef: function (ref) {
+ ref.isOn = false
+ this.change()
+ },
+ enableRef: function (ref) {
+ ref.isOn = true
+ this.change()
+ },
removeRef: function (index) {
let that = this
teaweb.confirm("确定要删除此缓存设置吗?", function () {
@@ -133,13 +141,25 @@ Vue.component("http-cache-refs-config-box", {
},
change: function () {
// 自动保存
- if (this.vCachePolicyId != null && this.vCachePolicyId > 0) {
+ if (this.vCachePolicyId != null && this.vCachePolicyId > 0) { // 缓存策略
Tea.action("/servers/components/cache/updateRefs")
.params({
cachePolicyId: this.vCachePolicyId,
refsJSON: JSON.stringify(this.refs)
})
.post()
+ } else if (this.vWebId != null && this.vWebId > 0) { // Server Web or Group Web
+ Tea.action("/servers/server/settings/cache/updateRefs")
+ .params({
+ webId: this.vWebId,
+ refsJSON: JSON.stringify(this.refs)
+ })
+ .success(function (resp) {
+ if (resp.data.isUpdated) {
+ teaweb.successToast("保存成功")
+ }
+ })
+ .post()
}
}
},
@@ -155,14 +175,14 @@ Vue.component("http-cache-refs-config-box", {
缓存条件 |
分组关系 |
缓存时间 |
- 操作 |
+ 操作 |
| |
-
-
+ |
+
{{cacheRef.minSize.count}}{{cacheRef.minSize.unit}}
- {{cacheRef.maxSize.count}}{{cacheRef.maxSize.unit}}
@@ -173,16 +193,17 @@ Vue.component("http-cache-refs-config-box", {
状态码:{{cacheRef.status.map(function(v) {return v.toString()}).join(", ")}}
区间缓存
|
-
+ |
和
或
|
-
+ |
{{cacheRef.life.count}} {{timeUnitName(cacheRef.life.unit)}}
不缓存
|
修改
+ 暂停恢复
删除
|
diff --git a/web/views/@default/@layout_override.css b/web/views/@default/@layout_override.css
index 53b9391f..6b09eb7f 100644
--- a/web/views/@default/@layout_override.css
+++ b/web/views/@default/@layout_override.css
@@ -12,6 +12,9 @@
.ui.label.basic.grey {
border: 1px #ccc solid !important;
}
+.disabled .ui.label {
+ color: #ccc !important;
+}
form .fields {
margin-bottom: 0 !important;
}
@@ -49,7 +52,7 @@ body.swal2-shown {
overflow: auto !important;
}
.grid {
- margin-right: 0!important;
+ margin-right: 0 !important;
}
.fields button {
min-width: 5em;
diff --git a/web/views/@default/@layout_override.css.map b/web/views/@default/@layout_override.css.map
index dace5f21..2dc51bf4 100644
--- a/web/views/@default/@layout_override.css.map
+++ b/web/views/@default/@layout_override.css.map
@@ -1 +1 @@
-{"version":3,"sources":["@layout_override.less"],"names":[],"mappings":"AACA,GAAG,OAAO,SAAU,MAAK,MAAM,QAAS,OAAM;AAAS,GAAG,OAAO,SAAU,MAAK,MAAM,QAAS,QAAO;EACrG,yBAAA;;AAGD,GAAG,OAAO,SAAU,MAAK,QAAS,OAAM;AAAS,GAAG,OAAO,SAAU,MAAK,QAAS,QAAO;EACzF,yBAAA;;AAGD,GAAG,MAAM;EACR,kCAAA;;AAGD,GAAG,MAAM,MAAM;EACd,sBAAA;;AAID,IACC;EACC,2BAAA;;AAKF,KAAK;EACJ,sBAAA;;AAGD,KAAK,KAAK;EACT,cAAA;;AAID,KACC,GAAE;AADH,KACY,GAAE;EACZ,6BAAA;EACA,0BAAA;EACA,2BAAA;;AAJF,KAOC,GAAE;EACD,WAAA;;AARF,KAWC,GAAE;EACD,UAAA;;AAZF,KAeC,GAAE;EACD,UAAA;;AAKF,QAAQ;EACP,qBAAA;;AAID,MAAM;EACL,uBAAA;;AAID,QACC,MAAK;EACJ,yBAAA;;AAKF,IAAI;EACH,yBAAA;;AAID;EACC,yBAAA;;AAID,OACC;EACC,cAAA","file":"@layout_override.css"}
\ No newline at end of file
+{"version":3,"sources":["@layout_override.less"],"names":[],"mappings":"AACA,GAAG,OAAO,SAAU,MAAK,MAAM,QAAS,OAAM;AAAS,GAAG,OAAO,SAAU,MAAK,MAAM,QAAS,QAAO;EACrG,yBAAA;;AAGD,GAAG,OAAO,SAAU,MAAK,QAAS,OAAM;AAAS,GAAG,OAAO,SAAU,MAAK,QAAS,QAAO;EACzF,yBAAA;;AAGD,GAAG,MAAM;EACR,kCAAA;;AAGD,GAAG,MAAM,MAAM;EACd,sBAAA;;AAGD,SAAU,IAAG;EACZ,WAAA;;AAID,IACC;EACC,2BAAA;;AAKF,KAAK;EACJ,sBAAA;;AAGD,KAAK,KAAK;EACT,cAAA;;AAID,KACC,GAAE;AADH,KACY,GAAE;EACZ,6BAAA;EACA,0BAAA;EACA,2BAAA;;AAJF,KAOC,GAAE;EACD,WAAA;;AARF,KAWC,GAAE;EACD,UAAA;;AAZF,KAeC,GAAE;EACD,UAAA;;AAKF,QAAQ;EACP,qBAAA;;AAID,MAAM;EACL,uBAAA;;AAID,QACC,MAAK;EACJ,yBAAA;;AAKF,IAAI;EACH,yBAAA;;AAID;EACC,0BAAA;;AAID,OACC;EACC,cAAA","file":"@layout_override.css"}
\ No newline at end of file
diff --git a/web/views/@default/@layout_override.less b/web/views/@default/@layout_override.less
index db994e9a..81758162 100644
--- a/web/views/@default/@layout_override.less
+++ b/web/views/@default/@layout_override.less
@@ -15,6 +15,10 @@
border: 1px #ccc solid !important;
}
+.disabled .ui.label {
+ color: #ccc !important;
+}
+
// fields
form {
.fields {
@@ -76,7 +80,7 @@ body.swal2-shown {
// grid
.grid {
- margin-right: 0!important;
+ margin-right: 0 !important;
}
// fields
diff --git a/web/views/@default/servers/server/settings/cache/index.html b/web/views/@default/servers/server/settings/cache/index.html
index a54ee449..20b0a3f0 100644
--- a/web/views/@default/servers/server/settings/cache/index.html
+++ b/web/views/@default/servers/server/settings/cache/index.html
@@ -13,7 +13,7 @@