mirror of
				https://github.com/TeaOSLab/EdgeAdmin.git
				synced 2025-11-04 05:00:25 +08:00 
			
		
		
		
	实现stale cache配置
This commit is contained in:
		@@ -26,6 +26,9 @@ Vue.component("http-cache-config-box", {
 | 
			
		||||
		isOn: function () {
 | 
			
		||||
			return ((!this.vIsLocation && !this.vIsGroup) || this.cacheConfig.isPrior) && this.cacheConfig.isOn
 | 
			
		||||
		},
 | 
			
		||||
		isPlus: function () {
 | 
			
		||||
			return Tea.Vue.teaIsPlus
 | 
			
		||||
		},
 | 
			
		||||
		generatePurgeKey: function () {
 | 
			
		||||
			let r = Math.random().toString() + Math.random().toString()
 | 
			
		||||
			let s = r.replace(/0\./g, "")
 | 
			
		||||
@@ -38,6 +41,9 @@ Vue.component("http-cache-config-box", {
 | 
			
		||||
		},
 | 
			
		||||
		showMoreOptions: function () {
 | 
			
		||||
			this.moreOptionsVisible = !this.moreOptionsVisible
 | 
			
		||||
		},
 | 
			
		||||
		changeStale: function (stale) {
 | 
			
		||||
			this.cacheConfig.stale = stale
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	template: `<div>
 | 
			
		||||
@@ -94,14 +100,14 @@ Vue.component("http-cache-config-box", {
 | 
			
		||||
				</td>
 | 
			
		||||
			</tr>
 | 
			
		||||
			<tr>
 | 
			
		||||
				<td>允许PURGE</td>
 | 
			
		||||
				<td class="color-border">允许PURGE</td>
 | 
			
		||||
				<td>
 | 
			
		||||
					<checkbox v-model="cacheConfig.purgeIsOn"></checkbox>
 | 
			
		||||
					<p class="comment">允许使用PURGE方法清除某个URL缓存。</p>
 | 
			
		||||
				</td>
 | 
			
		||||
			</tr>
 | 
			
		||||
			<tr v-show="cacheConfig.purgeIsOn">
 | 
			
		||||
				<td>PURGE Key *</td>
 | 
			
		||||
				<td class="color-border">PURGE Key *</td>
 | 
			
		||||
				<td>
 | 
			
		||||
					<input type="text" maxlength="200" v-model="cacheConfig.purgeKey"/>
 | 
			
		||||
					<p class="comment"><a href="" @click.prevent="generatePurgeKey">[随机生成]</a>。需要在PURGE方法调用时加入<code-label>Edge-Purge-Key: {{cacheConfig.purgeKey}}</code-label> Header。只能包含字符、数字、下划线。</p>
 | 
			
		||||
@@ -110,7 +116,12 @@ Vue.component("http-cache-config-box", {
 | 
			
		||||
		</tbody>
 | 
			
		||||
	</table>
 | 
			
		||||
	
 | 
			
		||||
	<div v-show="isOn()">
 | 
			
		||||
	<div v-if="isOn() && moreOptionsVisible && isPlus()">
 | 
			
		||||
		<h4>陈旧缓存策略</h4>
 | 
			
		||||
		<http-cache-stale-config :v-cache-stale-config="cacheConfig.stale" @change="changeStale"></http-cache-stale-config>
 | 
			
		||||
	</div>
 | 
			
		||||
	
 | 
			
		||||
	<div v-show="isOn()" style="margin-top: 1em">
 | 
			
		||||
		<h4>缓存条件</h4>
 | 
			
		||||
		<http-cache-refs-config-box :v-cache-config="cacheConfig" :v-cache-refs="cacheConfig.cacheRefs" ></http-cache-refs-config-box>
 | 
			
		||||
	</div>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										61
									
								
								web/public/js/components/server/http-cache-stale-config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								web/public/js/components/server/http-cache-stale-config.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
			
		||||
Vue.component("http-cache-stale-config", {
 | 
			
		||||
	props: ["v-cache-stale-config"],
 | 
			
		||||
	data: function () {
 | 
			
		||||
		let config = this.vCacheStaleConfig
 | 
			
		||||
		if (config == null) {
 | 
			
		||||
			config = {
 | 
			
		||||
				isPrior: false,
 | 
			
		||||
				isOn: false,
 | 
			
		||||
				status: [],
 | 
			
		||||
				supportStaleIfErrorHeader: true,
 | 
			
		||||
				life: {
 | 
			
		||||
					count: 1,
 | 
			
		||||
					unit: "day"
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		return {
 | 
			
		||||
			config: config
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	watch: {
 | 
			
		||||
		config: {
 | 
			
		||||
			deep: true,
 | 
			
		||||
			handler: function () {
 | 
			
		||||
				this.$emit("change", this.config)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	methods: {},
 | 
			
		||||
	template: `<table class="ui table definition selectable">
 | 
			
		||||
	<tbody>
 | 
			
		||||
		<tr>
 | 
			
		||||
			<td class="title">启用陈旧缓存</td>
 | 
			
		||||
			<td>
 | 
			
		||||
				<checkbox v-model="config.isOn"></checkbox>
 | 
			
		||||
				<p class="comment">选中后,在更新缓存失败后会尝试读取陈旧的缓存。</p>
 | 
			
		||||
			</td>
 | 
			
		||||
		</tr>
 | 
			
		||||
		<tr v-show="config.isOn">
 | 
			
		||||
			<td>有效期</td>
 | 
			
		||||
			<td>
 | 
			
		||||
				<time-duration-box :v-value="config.life"></time-duration-box>
 | 
			
		||||
				<p class="comment">缓存在过期之后,仍然保留的时间。</p>
 | 
			
		||||
			</td>
 | 
			
		||||
		</tr>
 | 
			
		||||
		<tr v-show="config.isOn">
 | 
			
		||||
			<td>状态码</td>
 | 
			
		||||
			<td><http-status-box :v-status-list="config.status"></http-status-box>
 | 
			
		||||
				<p class="comment">在这些状态码出现时使用陈旧缓存,默认支持<code-label>50x</code-label>状态码。</p>
 | 
			
		||||
			</td>
 | 
			
		||||
		</tr>
 | 
			
		||||
		<tr v-show="config.isOn">
 | 
			
		||||
			<td>支持stale-if-error</td>
 | 
			
		||||
			<td>
 | 
			
		||||
				<checkbox v-model="config.supportStaleIfErrorHeader"></checkbox>
 | 
			
		||||
				<p class="comment">选中后,支持在Cache-Control中通过<code-label>stale-if-error</code-label>指定陈旧缓存有效期。</p>
 | 
			
		||||
			</td>
 | 
			
		||||
		</tr>
 | 
			
		||||
	</tbody>
 | 
			
		||||
</table>`
 | 
			
		||||
})
 | 
			
		||||
		Reference in New Issue
	
	Block a user