mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-06 06:40:27 +08:00
文件缓存策略支持二级缓存(内存 | 文件)
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
|||||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
||||||
|
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
|
||||||
"github.com/iwind/TeaGo/actions"
|
"github.com/iwind/TeaGo/actions"
|
||||||
"github.com/iwind/TeaGo/maps"
|
"github.com/iwind/TeaGo/maps"
|
||||||
)
|
)
|
||||||
@@ -28,7 +29,8 @@ func (this *CreatePopupAction) RunPost(params struct {
|
|||||||
Type string
|
Type string
|
||||||
|
|
||||||
// file
|
// file
|
||||||
FileDir string
|
FileDir string
|
||||||
|
FileMemoryCapacityJSON []byte
|
||||||
|
|
||||||
CapacityJSON []byte
|
CapacityJSON []byte
|
||||||
MaxSizeJSON []byte
|
MaxSizeJSON []byte
|
||||||
@@ -50,8 +52,21 @@ func (this *CreatePopupAction) RunPost(params struct {
|
|||||||
params.Must.
|
params.Must.
|
||||||
Field("fileDir", params.FileDir).
|
Field("fileDir", params.FileDir).
|
||||||
Require("请输入缓存目录")
|
Require("请输入缓存目录")
|
||||||
|
|
||||||
|
memoryCapacity := &shared.SizeCapacity{}
|
||||||
|
if len(params.FileMemoryCapacityJSON) > 0 {
|
||||||
|
err := json.Unmarshal(params.FileMemoryCapacityJSON, memoryCapacity)
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
options = &serverconfigs.HTTPFileCacheStorage{
|
options = &serverconfigs.HTTPFileCacheStorage{
|
||||||
Dir: params.FileDir,
|
Dir: params.FileDir,
|
||||||
|
MemoryPolicy: &serverconfigs.HTTPCachePolicy{
|
||||||
|
Capacity: memoryCapacity,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
case serverconfigs.CachePolicyStorageMemory:
|
case serverconfigs.CachePolicyStorageMemory:
|
||||||
options = &serverconfigs.HTTPMemoryCacheStorage{
|
options = &serverconfigs.HTTPMemoryCacheStorage{
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
||||||
|
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
|
||||||
"github.com/iwind/TeaGo/actions"
|
"github.com/iwind/TeaGo/actions"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -52,7 +53,8 @@ func (this *UpdateAction) RunPost(params struct {
|
|||||||
Type string
|
Type string
|
||||||
|
|
||||||
// file
|
// file
|
||||||
FileDir string
|
FileDir string
|
||||||
|
FileMemoryCapacityJSON []byte
|
||||||
|
|
||||||
CapacityJSON []byte
|
CapacityJSON []byte
|
||||||
MaxSizeJSON []byte
|
MaxSizeJSON []byte
|
||||||
@@ -74,8 +76,21 @@ func (this *UpdateAction) RunPost(params struct {
|
|||||||
params.Must.
|
params.Must.
|
||||||
Field("fileDir", params.FileDir).
|
Field("fileDir", params.FileDir).
|
||||||
Require("请输入缓存目录")
|
Require("请输入缓存目录")
|
||||||
|
|
||||||
|
memoryCapacity := &shared.SizeCapacity{}
|
||||||
|
if len(params.FileMemoryCapacityJSON) > 0 {
|
||||||
|
err := json.Unmarshal(params.FileMemoryCapacityJSON, memoryCapacity)
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
options = &serverconfigs.HTTPFileCacheStorage{
|
options = &serverconfigs.HTTPFileCacheStorage{
|
||||||
Dir: params.FileDir,
|
Dir: params.FileDir,
|
||||||
|
MemoryPolicy: &serverconfigs.HTTPCachePolicy{
|
||||||
|
Capacity: memoryCapacity,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
case serverconfigs.CachePolicyStorageMemory:
|
case serverconfigs.CachePolicyStorageMemory:
|
||||||
options = &serverconfigs.HTTPMemoryCacheStorage{
|
options = &serverconfigs.HTTPMemoryCacheStorage{
|
||||||
@@ -91,14 +106,14 @@ func (this *UpdateAction) RunPost(params struct {
|
|||||||
}
|
}
|
||||||
_, err = this.RPC().HTTPCachePolicyRPC().UpdateHTTPCachePolicy(this.AdminContext(), &pb.UpdateHTTPCachePolicyRequest{
|
_, err = this.RPC().HTTPCachePolicyRPC().UpdateHTTPCachePolicy(this.AdminContext(), &pb.UpdateHTTPCachePolicyRequest{
|
||||||
HttpCachePolicyId: params.CachePolicyId,
|
HttpCachePolicyId: params.CachePolicyId,
|
||||||
IsOn: params.IsOn,
|
IsOn: params.IsOn,
|
||||||
Name: params.Name,
|
Name: params.Name,
|
||||||
Description: params.Description,
|
Description: params.Description,
|
||||||
CapacityJSON: params.CapacityJSON,
|
CapacityJSON: params.CapacityJSON,
|
||||||
MaxKeys: params.MaxKeys,
|
MaxKeys: params.MaxKeys,
|
||||||
MaxSizeJSON: params.MaxSizeJSON,
|
MaxSizeJSON: params.MaxSizeJSON,
|
||||||
Type: params.Type,
|
Type: params.Type,
|
||||||
OptionsJSON: optionsJSON,
|
OptionsJSON: optionsJSON,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
this.ErrorPage(err)
|
this.ErrorPage(err)
|
||||||
|
|||||||
@@ -25,16 +25,32 @@
|
|||||||
<p class="comment">存放文件缓存的目录,通常填写绝对路径。</p>
|
<p class="comment">存放文件缓存的目录,通常填写绝对路径。</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="color-border">文件目录最大容量</td>
|
||||||
|
<td>
|
||||||
|
<size-capacity-box :v-name="'capacityJSON'" :v-count="0" :v-unit="'gb'"></size-capacity-box>
|
||||||
|
<p class="comment">作为二级缓存的文件目录允许缓存的最大容量,如果为0表示没有限制。</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="color-border">内存最大容量</td>
|
||||||
|
<td>
|
||||||
|
<size-capacity-box :v-name="'fileMemoryCapacityJSON'" :v-count="1" :v-unit="'gb'"></size-capacity-box>
|
||||||
|
<p class="comment">作为一级缓存的内存最大容量,如果为0表示不使用内存作为一级缓存。</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
||||||
|
<tbody v-if="policyType != 'file'">
|
||||||
|
<tr>
|
||||||
|
<td>内存最大容量</td>
|
||||||
|
<td>
|
||||||
|
<size-capacity-box :v-name="'capacityJSON'" :v-count="0" :v-unit="'gb'"></size-capacity-box>
|
||||||
|
<p class="comment">允许缓存的最大容量,如果为0表示没有限制。</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>缓存最大容量</td>
|
|
||||||
<td>
|
|
||||||
<size-capacity-box :v-name="'capacityJSON'" :v-count="0" :v-unit="'gb'"></size-capacity-box>
|
|
||||||
<p class="comment">允许缓存的最大内容长度,如果为0表示没有限制。</p>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2"><more-options-indicator></more-options-indicator></td>
|
<td colspan="2"><more-options-indicator></more-options-indicator></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -19,49 +19,64 @@
|
|||||||
|
|
||||||
<!-- 文件缓存选项 -->
|
<!-- 文件缓存选项 -->
|
||||||
<tbody v-if="cachePolicy.type == 'file'">
|
<tbody v-if="cachePolicy.type == 'file'">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="color-border">缓存目录</td>
|
<td class="color-border">缓存目录</td>
|
||||||
<td>
|
<td>
|
||||||
{{cachePolicy.options.dir}}
|
{{cachePolicy.options.dir}}
|
||||||
<p class="comment">存放文件缓存的目录,通常填写绝对路径。</p>
|
<p class="comment">存放文件缓存的目录,通常填写绝对路径。</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="color-border">文件目录最大容量</td>
|
||||||
|
<td>
|
||||||
|
<size-capacity-view :v-value="cachePolicy.capacity" :v-default-text="'不限'"></size-capacity-view>
|
||||||
|
<p class="comment">作为二级缓存的文件目录允许缓存的最大容量,如果为0表示没有限制。</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-if="cachePolicy.options.memoryPolicy != null && cachePolicy.options.memoryPolicy.capacity != null && cachePolicy.options.memoryPolicy.capacity.count > 0">
|
||||||
|
<td class="color-border">内存最大容量</td>
|
||||||
|
<td>
|
||||||
|
<size-capacity-view :v-value="cachePolicy.options.memoryPolicy.capacity"></size-capacity-view>
|
||||||
|
<p class="comment">作为一级缓存的内存最大容量,如果为0表示不使用内存作为一级缓存。</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
||||||
|
<tbody v-if="cachePolicy.type != 'file'">
|
||||||
<tr>
|
<tr>
|
||||||
<td>缓存最大容量</td>
|
<td>缓存最大容量</td>
|
||||||
<td>
|
<td>
|
||||||
<size-capacity-view :v-value="cachePolicy.capacity" :v-default-text="'不限'"></size-capacity-view>
|
<size-capacity-view :v-value="cachePolicy.capacity" :v-default-text="'不限'"></size-capacity-view>
|
||||||
<p class="comment">允许缓存的最大内容长度,如果为0表示没有限制。</p>
|
<p class="comment">允许缓存的最大容量,如果为0表示没有限制。</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
</tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2"><more-options-indicator></more-options-indicator></td>
|
<td colspan="2"><more-options-indicator></more-options-indicator></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tbody v-show="moreOptionsVisible">
|
<tbody v-show="moreOptionsVisible">
|
||||||
<tr>
|
<tr>
|
||||||
<td>最大内容长度</td>
|
<td>最大内容长度</td>
|
||||||
<td>
|
<td>
|
||||||
<size-capacity-view :v-value="cachePolicy.maxSize" :v-default-text="'不限'"></size-capacity-view>
|
<size-capacity-view :v-value="cachePolicy.maxSize" :v-default-text="'不限'"></size-capacity-view>
|
||||||
<p class="comment">允许缓存的最大内容长度,如果为0表示没有限制。</p>
|
<p class="comment">允许缓存的最大内容长度,如果为0表示没有限制。</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>容纳Key数量</td>
|
<td>容纳Key数量</td>
|
||||||
<td>
|
<td>
|
||||||
<span v-if="cachePolicy.maxKeys > 0">{{cachePolicy.maxKeys}}</span>
|
<span v-if="cachePolicy.maxKeys > 0">{{cachePolicy.maxKeys}}</span>
|
||||||
<span v-else>不限</span>
|
<span v-else>不限</span>
|
||||||
<p class="comment">可以容纳多少数量的Key,0表示不限制。</p>
|
<p class="comment">可以容纳多少数量的Key,0表示不限制。</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>描述</td>
|
<td>描述</td>
|
||||||
<td>
|
<td>
|
||||||
<span v-if="cachePolicy.description.length > 0">{{cachePolicy.description}}</span>
|
<span v-if="cachePolicy.description.length > 0">{{cachePolicy.description}}</span>
|
||||||
<span v-else class="disabled">暂时还没有描述。</span>
|
<span v-else class="disabled">暂时还没有描述。</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|||||||
@@ -27,16 +27,38 @@
|
|||||||
<p class="comment">存放文件缓存的目录,通常填写绝对路径。</p>
|
<p class="comment">存放文件缓存的目录,通常填写绝对路径。</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="color-border">文件目录最大容量</td>
|
||||||
|
<td>
|
||||||
|
<size-capacity-box :v-name="'capacityJSON'" :v-value="cachePolicy.capacity" :v-count="0" :v-unit="'gb'"></size-capacity-box>
|
||||||
|
<p class="comment">作为二级缓存的文件目录允许缓存的最大容量,如果为0表示没有限制。</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-if="cachePolicy.options.memoryPolicy != null && cachePolicy.options.memoryPolicy.capacity != null">
|
||||||
|
<td class="color-border">内存最大容量</td>
|
||||||
|
<td>
|
||||||
|
<size-capacity-box :v-name="'fileMemoryCapacityJSON'" :v-value="cachePolicy.options.memoryPolicy.capacity" :v-count="1" :v-unit="'gb'"></size-capacity-box>
|
||||||
|
<p class="comment">作为一级缓存的内存最大容量,如果为0表示不使用内存作为一级缓存。</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-if="cachePolicy.options.memoryPolicy == null || cachePolicy.options.memoryPolicy.capacity == null">
|
||||||
|
<td class="color-border">内存最大容量</td>
|
||||||
|
<td>
|
||||||
|
<size-capacity-box :v-name="'fileMemoryCapacityJSON'" :v-count="0" :v-unit="'gb'"></size-capacity-box>
|
||||||
|
<p class="comment">作为一级缓存的内存最大容量,如果为0表示不使用内存作为一级缓存。</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
||||||
|
<tbody v-if="policyType != 'file'">
|
||||||
<tr>
|
<tr>
|
||||||
<td>缓存最大容量</td>
|
<td>缓存最大容量</td>
|
||||||
<td>
|
<td>
|
||||||
<size-capacity-box :v-name="'capacityJSON'" :v-value="cachePolicy.capacity" :v-count="0" :v-unit="'gb'"></size-capacity-box>
|
<size-capacity-box :v-name="'capacityJSON'" :v-value="cachePolicy.capacity" :v-count="0" :v-unit="'gb'"></size-capacity-box>
|
||||||
<p class="comment">允许缓存的最大内容长度,如果为0表示没有限制。</p>
|
<p class="comment">允许缓存的最大容量,如果为0表示没有限制。</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
</tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2"><more-options-indicator></more-options-indicator></td>
|
<td colspan="2"><more-options-indicator></more-options-indicator></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
Reference in New Issue
Block a user