1
0
mirror of https://github.com/ZeroCatDev/Classworks.git synced 2025-07-02 00:59:23 +00:00
Classworks/assets/CacheManagement-BVx9heem.js

2 lines
7.5 KiB
JavaScript

import{_ as W,C as c,D as i,E as s,k as a,T as b,G as r,U as A,W as _,J as l,V as m,X as p,Y as v,Z as f,F as w,H as V,I as x,ao as E,ap as N,aw as L,ax as P,S as C}from"./index-DpRopL3V.js";import{V as y}from"./VAlert-BS51CJh5.js";import{V as H,a as I,b as R,c as B}from"./VExpansionPanels-BEW1skbM.js";import{V as F}from"./VChip-BTSKEMFl.js";import{V as U}from"./VSkeletonLoader-Dq0HmBpQ.js";import{a as M,V as k}from"./VRow-CnmWQtpQ.js";import{V as z}from"./VContainer-SydirbBl.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=o=>{e(o.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"},J={class:"d-flex justify-end mb-2"};function O(t,e,n,g,o,d){return i(),c(C,null,{default:s(()=>[a(b,{class:"d-flex align-center"},{default:s(()=>[e[2]||(e[2]=r("span",null,"缓存管理",-1)),a(A),a(_,{color:"error",onClick:d.clearAllCaches,loading:o.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(()=>[o.serviceWorkerActive?v("",!0):(i(),c(y,{key:0,type:"warning",class:"mb-4"},{default:s(()=>e[3]||(e[3]=[l(" Service Worker 未激活,缓存管理功能不可用。 ")])),_:1,__:[3]})),o.message?(i(),c(y,{key:1,type:o.messageType,class:"mb-4"},{default:s(()=>[l(f(o.message),1)]),_:1},8,["type"])):v("",!0),o.caches.length>0?(i(),c(H,{key:2},{default:s(()=>[(i(!0),w(V,null,x(o.caches,u=>(i(),c(I,{key:u.name},{default:s(()=>[a(R,null,{default:s(()=>[r("div",j,[r("span",null,f(d.formatCacheName(u.name)),1),a(F,{class:"ml-2",size:"small"},{default:s(()=>[l(f(u.urls.length)+" 个文件",1)]),_:2},1024)])]),_:2},1024),a(B,null,{default:s(()=>[r("div",J,[a(_,{color:"error",size:"small",onClick:h=>d.clearCache(u.name),loading:o.loading},{default:s(()=>e[4]||(e[4]=[l(" 清除此缓存 ")])),_:2,__:[4]},1032,["onClick","loading"])]),a(E,{lines:"two"},{default:s(()=>[(i(!0),w(V,null,x(u.urls,(h,T)=>(i(),c(N,{key:T},{append:s(()=>[a(_,{icon:"",size:"small",color:"error",onClick:$=>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})):o.loading?(i(),c(U,{key:3,type:"article"})):(i(),c(y,{key:4,type:"info"},{default:s(()=>e[6]||(e[6]=[l(" 没有找到缓存数据。 ")])),_:1,__:[6]}))]),_:1})]),_:1})}const S=W(D,[["render",O]]),Y={name:"CacheManagementPage",components:{CacheManager:S},metaInfo:{title:"缓存管理"}},G={class:"d-flex align-center mb-6"},K={class:"d-flex align-center mb-2"},X={class:"d-flex align-center mb-2"};function Z(t,e,n,g,o,d){const u=S;return i(),c(z,null,{default:s(()=>[a(M,null,{default:s(()=>[a(k,{cols:"12"},{default:s(()=>[r("div",G,[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",K,[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",X,[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(Y,[["render",Z]]);export{le as default};