Compare commits
3 Commits
v0.1.0
...
v0.1.0.031
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
40d7b5af91 | ||
|
|
26ca5273d2 | ||
|
|
14b9acafdf |
@@ -559,9 +559,6 @@ pub async fn run_deep_memory_clean() -> Result<u64, String> {
|
|||||||
SetSystemFileCacheSize(usize::MAX, usize::MAX, 0);
|
SetSystemFileCacheSize(usize::MAX, usize::MAX, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 配合普通清理一起执行
|
|
||||||
let _ = run_memory_clean().await;
|
|
||||||
|
|
||||||
let after = get_memory_stats().used;
|
let after = get_memory_stats().used;
|
||||||
let freed = before.saturating_sub(after);
|
let freed = before.saturating_sub(after);
|
||||||
Ok(freed)
|
Ok(freed)
|
||||||
|
|||||||
75
src/App.vue
75
src/App.vue
@@ -455,7 +455,7 @@ watch(activeTab, (newTab) => {
|
|||||||
:class="{ active: activeTab === 'clean-c-deep' }"
|
:class="{ active: activeTab === 'clean-c-deep' }"
|
||||||
@click="activeTab = 'clean-c-deep'"
|
@click="activeTab = 'clean-c-deep'"
|
||||||
>
|
>
|
||||||
深度分析
|
查找大目录
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -511,8 +511,8 @@ watch(activeTab, (newTab) => {
|
|||||||
<section v-if="activeTab === 'clean-c-fast'" class="page-container">
|
<section v-if="activeTab === 'clean-c-fast'" class="page-container">
|
||||||
<div class="page-header">
|
<div class="page-header">
|
||||||
<div class="header-info">
|
<div class="header-info">
|
||||||
<h1>快速清理系统盘</h1>
|
<h1>清理系统盘</h1>
|
||||||
<p>一键释放 C 盘空间,不影响系统运行。</p>
|
<p>快速清理 C 盘缓存,不影响系统运行。</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -614,7 +614,7 @@ watch(activeTab, (newTab) => {
|
|||||||
<div class="page-header">
|
<div class="page-header">
|
||||||
<div class="header-info">
|
<div class="header-info">
|
||||||
<h1>高级清理工具</h1>
|
<h1>高级清理工具</h1>
|
||||||
<p>执行深层系统优化,释放更多磁盘空间。</p>
|
<p>针对特定系统区域执行清理,但都有注意事项和副作用,在不理解的情况下慎点。</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -625,13 +625,18 @@ watch(activeTab, (newTab) => {
|
|||||||
<div class="adv-card-info">
|
<div class="adv-card-info">
|
||||||
<span class="adv-card-icon">⚙️</span>
|
<span class="adv-card-icon">⚙️</span>
|
||||||
<div class="adv-card-text">
|
<div class="adv-card-text">
|
||||||
<h3>系统组件清理</h3>
|
<h3>系统组件清理 <small class="detail-hint">(点击查看详情)</small></h3>
|
||||||
<p>通过 DISM 命令移除不再需要的系统冗余组件。</p>
|
<p>通过 DISM 命令移除不再需要的系统冗余组件。</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn-action" @click.stop="runAdvancedTask('dism')" :disabled="advLoading['dism']">
|
<div class="adv-card-right">
|
||||||
{{ advLoading['dism'] ? '执行中...' : '执行' }}
|
<span class="expand-icon" :class="{ rotated: expandedAdvanced === 'dism' }">
|
||||||
</button>
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
|
||||||
|
</span>
|
||||||
|
<button class="btn-action" @click.stop="runAdvancedTask('dism')" :disabled="advLoading['dism']">
|
||||||
|
{{ advLoading['dism'] ? '执行中...' : '执行' }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="adv-card-detail" v-show="expandedAdvanced === 'dism'">
|
<div class="adv-card-detail" v-show="expandedAdvanced === 'dism'">
|
||||||
<div class="detail-content">
|
<div class="detail-content">
|
||||||
@@ -653,11 +658,16 @@ watch(activeTab, (newTab) => {
|
|||||||
<div class="adv-card-info">
|
<div class="adv-card-info">
|
||||||
<span class="adv-card-icon">🖼️</span>
|
<span class="adv-card-icon">🖼️</span>
|
||||||
<div class="adv-card-text">
|
<div class="adv-card-text">
|
||||||
<h3>清理缩略图缓存</h3>
|
<h3>清理缩略图缓存 <small class="detail-hint">(点击查看详情)</small></h3>
|
||||||
<p>重置文件夹预览缩略图数据库以释放空间。</p>
|
<p>重置文件夹预览缩略图数据库以释放空间。</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn-action" @click.stop="runAdvancedTask('thumb')" :disabled="advLoading['thumb']">执行</button>
|
<div class="adv-card-right">
|
||||||
|
<span class="expand-icon" :class="{ rotated: expandedAdvanced === 'thumb' }">
|
||||||
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
|
||||||
|
</span>
|
||||||
|
<button class="btn-action" @click.stop="runAdvancedTask('thumb')" :disabled="advLoading['thumb']">执行</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="adv-card-detail" v-show="expandedAdvanced === 'thumb'">
|
<div class="adv-card-detail" v-show="expandedAdvanced === 'thumb'">
|
||||||
<div class="detail-content">
|
<div class="detail-content">
|
||||||
@@ -678,11 +688,16 @@ watch(activeTab, (newTab) => {
|
|||||||
<div class="adv-card-info">
|
<div class="adv-card-info">
|
||||||
<span class="adv-card-icon">🌙</span>
|
<span class="adv-card-icon">🌙</span>
|
||||||
<div class="adv-card-text">
|
<div class="adv-card-text">
|
||||||
<h3>关闭休眠文件</h3>
|
<h3>关闭休眠文件 <small class="detail-hint">(点击查看详情)</small></h3>
|
||||||
<p>永久删除 hiberfil.sys 文件(大小等同于内存)。</p>
|
<p>永久删除 hiberfil.sys 文件(大小等同于内存)。</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn-action" @click.stop="runAdvancedTask('hiber')" :disabled="advLoading['hiber']">执行</button>
|
<div class="adv-card-right">
|
||||||
|
<span class="expand-icon" :class="{ rotated: expandedAdvanced === 'hiber' }">
|
||||||
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
|
||||||
|
</span>
|
||||||
|
<button class="btn-action" @click.stop="runAdvancedTask('hiber')" :disabled="advLoading['hiber']">执行</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="adv-card-detail" v-show="expandedAdvanced === 'hiber'">
|
<div class="adv-card-detail" v-show="expandedAdvanced === 'hiber'">
|
||||||
<div class="detail-content">
|
<div class="detail-content">
|
||||||
@@ -691,6 +706,7 @@ watch(activeTab, (newTab) => {
|
|||||||
<h4 class="warning-title">注意事项:</h4>
|
<h4 class="warning-title">注意事项:</h4>
|
||||||
<ul>
|
<ul>
|
||||||
<li>关闭后将无法使用“休眠”功能及“快速启动”技术。</li>
|
<li>关闭后将无法使用“休眠”功能及“快速启动”技术。</li>
|
||||||
|
<li>只需执行一次。</li>
|
||||||
<li>需要管理员权限。</li>
|
<li>需要管理员权限。</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@@ -704,7 +720,7 @@ watch(activeTab, (newTab) => {
|
|||||||
<div class="page-header">
|
<div class="page-header">
|
||||||
<div class="header-info">
|
<div class="header-info">
|
||||||
<h1>清理{{ activeTab === 'clean-browser-chrome' ? '谷歌浏览器' : '微软浏览器' }}</h1>
|
<h1>清理{{ activeTab === 'clean-browser-chrome' ? '谷歌浏览器' : '微软浏览器' }}</h1>
|
||||||
<p>安全清理浏览器缓存、临时文件,释放磁盘空间。</p>
|
<p>安全清理浏览器缓存、临时文件等,不会删除账号。</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -870,7 +886,7 @@ watch(activeTab, (newTab) => {
|
|||||||
<div class="page-header">
|
<div class="page-header">
|
||||||
<div class="header-info">
|
<div class="header-info">
|
||||||
<h1>查找大目录</h1>
|
<h1>查找大目录</h1>
|
||||||
<p>层级化查看 C 盘占用,锁定空间大户。</p>
|
<p>查看 C 盘目录大小,适合技术人员细节分析空间占用情况。</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="header-actions">
|
<div class="header-actions">
|
||||||
<button class="btn-primary btn-sm" @click="startFullDiskScan" :disabled="isFullScanning">
|
<button class="btn-primary btn-sm" @click="startFullDiskScan" :disabled="isFullScanning">
|
||||||
@@ -883,7 +899,7 @@ watch(activeTab, (newTab) => {
|
|||||||
<div v-if="isFullScanning" class="scanning-overlay">
|
<div v-if="isFullScanning" class="scanning-overlay">
|
||||||
<div class="spinner"></div>
|
<div class="spinner"></div>
|
||||||
<div class="scanning-status">
|
<div class="scanning-status">
|
||||||
<p class="scanning-main-text">正在扫描全盘文件...</p>
|
<p class="scanning-main-text">正在扫描 C 盘文件...</p>
|
||||||
<div class="scanning-stats-row">
|
<div class="scanning-stats-row">
|
||||||
<span class="stat-badge">已扫描:{{ fullScanProgress.fileCount.toLocaleString() }} 个文件</span>
|
<span class="stat-badge">已扫描:{{ fullScanProgress.fileCount.toLocaleString() }} 个文件</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -934,8 +950,8 @@ watch(activeTab, (newTab) => {
|
|||||||
<section v-else-if="activeTab === 'clean-memory'" class="page-container memory-page-spread">
|
<section v-else-if="activeTab === 'clean-memory'" class="page-container memory-page-spread">
|
||||||
<div class="page-header">
|
<div class="page-header">
|
||||||
<div class="header-info">
|
<div class="header-info">
|
||||||
<h1>内存加速</h1>
|
<h1>清理内存</h1>
|
||||||
<p>通过压缩进程工作集,释放物理内存占用。</p>
|
<p>释放内存占用,不影响程序运行。但释放内存后重新打开之前的软件,会感到略微卡顿。</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -978,7 +994,7 @@ watch(activeTab, (newTab) => {
|
|||||||
<div class="action-card shadow-card" :class="{ cleaning: memoryState.isCleaning }">
|
<div class="action-card shadow-card" :class="{ cleaning: memoryState.isCleaning }">
|
||||||
<div class="action-info">
|
<div class="action-info">
|
||||||
<h3>普通加速</h3>
|
<h3>普通加速</h3>
|
||||||
<p>压缩所有进程的内存工作集,释放物理内存,不影响程序运行。</p>
|
<p>建议在需要开启更多软件,但内存占用居高不下时使用。</p>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn-primary" @click="startMemoryClean(false)" :disabled="memoryState.isCleaning">
|
<button class="btn-primary" @click="startMemoryClean(false)" :disabled="memoryState.isCleaning">
|
||||||
{{ memoryState.cleaningType === 'fast' ? '清理中...' : '立即加速' }}
|
{{ memoryState.cleaningType === 'fast' ? '清理中...' : '立即加速' }}
|
||||||
@@ -988,7 +1004,7 @@ watch(activeTab, (newTab) => {
|
|||||||
<div class="action-card shadow-card secondary" :class="{ cleaning: memoryState.isCleaning }">
|
<div class="action-card shadow-card secondary" :class="{ cleaning: memoryState.isCleaning }">
|
||||||
<div class="action-info">
|
<div class="action-info">
|
||||||
<h3>深度加速</h3>
|
<h3>深度加速</h3>
|
||||||
<p>强制清空系统备用列表(待机列表),释放更多被缓存的物理空间。</p>
|
<p>可以在长时间使用电脑后,感觉电脑有点卡顿时执行。</p>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn-secondary" @click="startMemoryClean(true)" :disabled="memoryState.isCleaning">
|
<button class="btn-secondary" @click="startMemoryClean(true)" :disabled="memoryState.isCleaning">
|
||||||
{{ memoryState.cleaningType === 'deep' ? '清理中...' : '深度加速' }}
|
{{ memoryState.cleaningType === 'deep' ? '清理中...' : '深度加速' }}
|
||||||
@@ -1363,9 +1379,24 @@ body {
|
|||||||
|
|
||||||
.adv-card-info { display: flex; align-items: center; gap: 24px; }
|
.adv-card-info { display: flex; align-items: center; gap: 24px; }
|
||||||
.adv-card-icon { font-size: 32px; }
|
.adv-card-icon { font-size: 32px; }
|
||||||
.adv-card-text h3 { font-size: 18px; margin-bottom: 4px; font-weight: 700; color: var(--text-main); }
|
.adv-card-text h3 { font-size: 18px; margin-bottom: 4px; font-weight: 700; color: var(--text-main); display: flex; align-items: center; gap: 8px; }
|
||||||
.adv-card-text p { color: var(--text-sec); font-size: 14px; }
|
.adv-card-text p { color: var(--text-sec); font-size: 14px; }
|
||||||
|
|
||||||
|
.detail-hint { font-size: 12px; color: var(--text-sec); font-weight: 400; opacity: 0.7; }
|
||||||
|
|
||||||
|
.adv-card-right { display: flex; align-items: center; gap: 16px; }
|
||||||
|
|
||||||
|
.expand-icon {
|
||||||
|
width: 32px; height: 32px;
|
||||||
|
display: flex; align-items: center; justify-content: center;
|
||||||
|
color: #C1C1C1;
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
border-radius: 50%;
|
||||||
|
background: #F8F9FA;
|
||||||
|
}
|
||||||
|
.expand-icon svg { width: 18px; height: 18px; }
|
||||||
|
.expand-icon.rotated { transform: rotate(180deg); background: #EBF4FF; color: var(--primary-color); }
|
||||||
|
|
||||||
.btn-action {
|
.btn-action {
|
||||||
background-color: #F2F2F7;
|
background-color: #F2F2F7;
|
||||||
color: var(--primary-color);
|
color: var(--primary-color);
|
||||||
@@ -1790,6 +1821,10 @@ body {
|
|||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.action-info {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
.action-info h3 {
|
.action-info h3 {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
|
|||||||
Reference in New Issue
Block a user