1
0
mirror of https://github.com/ZeroCatDev/Classworks.git synced 2025-09-03 16:19:22 +00:00
Classworks/assets/CacheManagement-BBgWlMor.js

2 lines
7.4 KiB
JavaScript

import{_ as W,j as c,o,w as s,d as t,q as A,i as r,x as b,y as p,t as l,v as m,z as C,B as k,C as f,A as w,F as x,G as V,O as E,P as N,X as L,Y as P,l as y}from"./index-B01HL2YE.js";import{V as _}from"./VAlert-C_dUaWCb.js";import{V as B,a as R,b as z,c as F}from"./VExpansionPanels-B9rY3beZ.js";import{V as H}from"./VChip-DGb8BoIB.js";import{V as I}from"./VSkeletonLoader-sErXiQwV.js";import{a as M,V as v}from"./VRow-CmZZJImz.js";import{V as U}from"./VContainer-yTxlmOws.js";const j={name:"CacheManager",data(){return{caches:[],loading:!1,serviceWorkerActive:!1,message:"",messageType:"info"}},mounted(){this.checkServiceWorker()},methods:{checkServiceWorker(){"serviceWorker"in navigator?navigator.serviceWorker.ready.then(()=>{this.serviceWorkerActive=!0,this.refreshCaches()}).catch(()=>{this.serviceWorkerActive=!1}):this.serviceWorkerActive=!1},async refreshCaches(){if(this.serviceWorkerActive){this.loading=!0,this.message="",this.caches=[];try{const a=await this.sendMessageToSW({type:"CACHE_KEYS"});for(const e of a.cacheNames){const n=await this.sendMessageToSW({type:"CACHE_CONTENT",cacheName:e});this.caches.push({name:e,urls:n.urls||[]})}}catch(a){this.showMessage("获取缓存信息失败: "+a.message,"error")}finally{this.loading=!1}}},async clearCache(a){this.loading=!0;try{(await this.sendMessageToSW({type:"CLEAR_CACHE",cacheName:a})).success?(this.showMessage(`已清除缓存: ${this.formatCacheName(a)}`,"success"),await this.refreshCaches()):this.showMessage("清除缓存失败","error")}catch(e){this.showMessage("清除缓存失败: "+e.message,"error")}finally{this.loading=!1}},async clearUrl(a,e){this.loading=!0;try{(await this.sendMessageToSW({type:"CLEAR_URL",cacheName:a,url:e})).success?(this.showMessage(`已从缓存中删除: ${this.getFileName(e)}`,"success"),await this.refreshCaches()):this.showMessage("删除缓存项失败","error")}catch(n){this.showMessage("删除缓存项失败: "+n.message,"error")}finally{this.loading=!1}},async clearAllCaches(){if(confirm("确定要清除所有缓存吗?这可能会导致应用需要重新下载资源。")){this.loading=!0;try{(await this.sendMessageToSW({type:"CLEAR_ALL_CACHES"})).success?(this.showMessage("已清除所有缓存","success"),await this.refreshCaches()):this.showMessage("清除所有缓存失败","error")}catch(a){this.showMessage("清除所有缓存失败: "+a.message,"error")}finally{this.loading=!1}}},sendMessageToSW(a){return new Promise((e,n)=>{if(!navigator.serviceWorker.controller){n(new Error("Service Worker 未控制页面"));return}const g=new MessageChannel;g.port1.onmessage=i=>{e(i.data)},navigator.serviceWorker.controller.postMessage(a,[g.port2]),setTimeout(()=>{n(new Error("Service Worker 响应超时"))},5e3)})},formatCacheName(a){return a.replace("workbox-precache-","预缓存-").replace("-cache","").replace("js","JS").replace("css","CSS").replace("html","HTML").replace("images","图片").replace("external-resources","外部资源").replace("cdn-cgi","CDN")},getFileName(a){try{const e=new URL(a),n=e.pathname.split("/");return n[n.length-1]||e.hostname}catch(e){return console.error("获取文件名失败:",e),a}},showMessage(a,e="info"){this.message=a,this.messageType=e,setTimeout(()=>{this.message===a&&(this.message="")},5e3)}}},O={class:"d-flex align-center"},D={class:"d-flex justify-end mb-2"};function Y(a,e,n,g,i,d){return o(),c(y,null,{default:s(()=>[t(A,{class:"d-flex align-center"},{default:s(()=>[e[2]||(e[2]=r("span",null,"缓存管理",-1)),t(b),t(p,{color:"error",onClick:d.clearAllCaches,loading:i.loading},{default:s(()=>[...e[0]||(e[0]=[l(" 清除所有缓存 ",-1)])]),_:1},8,["onClick","loading"]),t(p,{icon:"",class:"ml-2",onClick:d.refreshCaches},{default:s(()=>[t(m,null,{default:s(()=>[...e[1]||(e[1]=[l("mdi-refresh",-1)])]),_:1})]),_:1},8,["onClick"])]),_:1}),t(C,null,{default:s(()=>[i.serviceWorkerActive?k("",!0):(o(),c(_,{key:0,type:"warning",class:"mb-4"},{default:s(()=>[...e[3]||(e[3]=[l(" Service Worker 未激活,缓存管理功能不可用。 ",-1)])]),_:1})),i.message?(o(),c(_,{key:1,type:i.messageType,class:"mb-4"},{default:s(()=>[l(f(i.message),1)]),_:1},8,["type"])):k("",!0),i.caches.length>0?(o(),c(B,{key:2},{default:s(()=>[(o(!0),w(x,null,V(i.caches,u=>(o(),c(R,{key:u.name},{default:s(()=>[t(z,null,{default:s(()=>[r("div",O,[r("span",null,f(d.formatCacheName(u.name)),1),t(H,{class:"ml-2",size:"small"},{default:s(()=>[l(f(u.urls.length)+" 个文件",1)]),_:2},1024)])]),_:2},1024),t(F,null,{default:s(()=>[r("div",D,[t(p,{color:"error",size:"small",onClick:h=>d.clearCache(u.name),loading:i.loading},{default:s(()=>[...e[4]||(e[4]=[l(" 清除此缓存 ",-1)])]),_:2},1032,["onClick","loading"])]),t(E,{lines:"two"},{default:s(()=>[(o(!0),w(x,null,V(u.urls,(h,T)=>(o(),c(N,{key:T},{append:s(()=>[t(p,{icon:"",size:"small",color:"error",onClick:$=>d.clearUrl(u.name,h)},{default:s(()=>[t(m,null,{default:s(()=>[...e[5]||(e[5]=[l("mdi-delete",-1)])]),_:1})]),_:2},1032,["onClick"])]),default:s(()=>[t(L,{class:"text-truncate"},{default:s(()=>[l(f(d.getFileName(h)),1)]),_:2},1024),t(P,{class:"text-truncate"},{default:s(()=>[l(f(h),1)]),_:2},1024)]),_:2},1024))),128))]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1})):i.loading?(o(),c(I,{key:3,type:"article"})):(o(),c(_,{key:4,type:"info"},{default:s(()=>[...e[6]||(e[6]=[l(" 没有找到缓存数据。 ",-1)])]),_:1}))]),_:1})]),_:1})}const S=W(j,[["render",Y]]),q={name:"CacheManagementPage",components:{CacheManager:S},metaInfo:{title:"缓存管理"}},G={class:"d-flex align-center mb-6"},J={class:"d-flex align-center mb-2"},K={class:"d-flex align-center mb-2"};function X(a,e,n,g,i,d){const u=S;return o(),c(U,null,{default:s(()=>[t(M,null,{default:s(()=>[t(v,{cols:"12"},{default:s(()=>[r("div",G,[t(m,{size:"x-large",color:"primary",class:"mr-3"},{default:s(()=>[...e[0]||(e[0]=[l("mdi-database-cog-outline",-1)])]),_:1}),e[1]||(e[1]=r("div",null,[r("h1",{class:"text-h4"},"缓存管理"),r("div",{class:"text-subtitle-1 text-grey"},"管理应用的本地缓存资源")],-1))]),t(y,{class:"mb-6",variant:"tonal",color:"info",density:"compact"},{default:s(()=>[t(C,{class:"d-flex align-center"},{default:s(()=>[t(m,{color:"info",class:"mr-2"},{default:s(()=>[...e[2]||(e[2]=[l("mdi-information-outline",-1)])]),_:1}),e[3]||(e[3]=r("span",null,"在这里您可以查看和管理应用的缓存文件。清除缓存可能会导致应用需要重新下载资源,但有助于解决某些显示问题。",-1))]),_:1})]),_:1}),t(M,null,{default:s(()=>[t(v,{cols:"12",md:"8"},{default:s(()=>[t(y,{class:"mb-4",variant:"tonal"},{default:s(()=>[t(C,null,{default:s(()=>[r("div",J,[t(m,{color:"primary",class:"mr-2"},{default:s(()=>[...e[4]||(e[4]=[l("mdi-information",-1)])]),_:1}),e[5]||(e[5]=r("span",{class:"text-h6"},"什么是缓存?",-1))]),e[6]||(e[6]=r("p",null,"缓存是浏览器在本地存储的网站资源副本,如图片、脚本和样式表等。这些缓存可以加快页面加载速度,减少数据使用,并在离线时提供基本功能。",-1))]),_:1})]),_:1})]),_:1}),t(v,{cols:"12",md:"4"},{default:s(()=>[t(y,{class:"mb-4",variant:"tonal"},{default:s(()=>[t(C,null,{default:s(()=>[r("div",K,[t(m,{color:"warning",class:"mr-2"},{default:s(()=>[...e[7]||(e[7]=[l("mdi-lightbulb-outline",-1)])]),_:1}),e[8]||(e[8]=r("span",{class:"text-h6"},"何时清除缓存?",-1))]),e[9]||(e[9]=r("ul",{class:"pl-4"},[r("li",null,"应用显示过时的内容"),r("li",null,"界面出现异常"),r("li",null,"应用功能不正常")],-1))]),_:1})]),_:1})]),_:1})]),_:1}),t(u)]),_:1})]),_:1})]),_:1})}const le=W(q,[["render",X]]);export{le as default};