1
0
mirror of https://github.com/ZeroCatDev/Classworks.git synced 2025-07-03 01:39:22 +00:00
Classworks/assets/CacheManagement-CGV7y8WP.js

2 lines
7.5 KiB
JavaScript

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