Merge pull request #62 from Moe-Sakura/main

main to dev
This commit is contained in:
Asuna
2026-01-09 17:24:55 +08:00
committed by GitHub
2 changed files with 21 additions and 6 deletions

View File

@@ -20,7 +20,9 @@ export type KenBurnsType =
const CONFIG = {
MAX_CACHE_SIZE: 10000, // 最大缓存 10000 张图片
CLEANUP_BATCH_SIZE: 2000, // 每次清理 2000 张
FETCH_INTERVAL: 5000, // 5秒获取一次
FETCH_INTERVAL: 5000, // 5秒获取一次(未达到缓存阈值时)
FETCH_INTERVAL_SLOW: 30000, // 30秒获取一次图片缓存充足时
CACHE_THRESHOLD: 30, // 缓存阈值,达到后切换到慢速获取
DISPLAY_INTERVAL: 10000, // 10秒切换一次
MAX_BLOB_URLS: 20, // 最大同时保持的 Blob URL 数量
PRELOAD_COUNT: 10, // 预加载图片数量
@@ -162,6 +164,11 @@ export function useBackgroundImage() {
// 限制缓存大小
await cleanupCacheIfNeeded()
// 如果刚好达到阈值,重启获取定时器以切换到慢速模式
if (newCache.length === CONFIG.CACHE_THRESHOLD) {
startFetchInterval()
}
// 如果队列为空,重新洗牌
if (shuffledQueue.value.length === 0) {
reshuffleQueue()
@@ -298,9 +305,14 @@ export function useBackgroundImage() {
void fetchAndCacheImage()
// 根据缓存数量决定获取间隔
const interval = imageCache.value.length >= CONFIG.CACHE_THRESHOLD
? CONFIG.FETCH_INTERVAL_SLOW
: CONFIG.FETCH_INTERVAL
fetchInterval = window.setInterval(() => {
void fetchAndCacheImage()
}, CONFIG.FETCH_INTERVAL)
}, interval)
}
// 启动图片显示定时器

View File

@@ -11,6 +11,7 @@ import {
} from './stores/plugins'
import { useUIStore } from './stores/ui'
import { useStatsStore } from './stores/stats'
import { useSettingsStore, DEFAULT_API_CONFIG } from './stores/settings'
// Noto Sans SC 字体(本地安装)
import '@fontsource/noto-sans-sc/300.css'
@@ -27,10 +28,6 @@ import './styles/theme.css'
// 苹果同款液态玻璃效果
import './styles/glassmorphism.css'
// 预加载随机图片 API
const preloadImage = new Image()
preloadImage.src = `https://api.illlights.com/v1/img?t=${Date.now()}`
// 自定义进度条(使用 anime.js
import { createProgressFetch } from './composables/useProgress'
@@ -66,6 +63,12 @@ app.use(pinia)
// 配置 fetch 进度条(拦截所有 fetch 请求)
createProgressFetch()
// 预加载随机图片 API需在 Pinia 初始化后调用)
const settingsStore = useSettingsStore()
const preloadImage = new Image()
const backgroundImageApiUrl = settingsStore.settings.backgroundImageApiUrl || DEFAULT_API_CONFIG.backgroundImageApiUrl
preloadImage.src = `${backgroundImageApiUrl}?t=${Date.now()}`
app.mount('#app')
// ============================================