mirror of
https://github.com/Moe-Sakura/frontend.git
synced 2026-03-15 04:53:18 +08:00
@@ -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)
|
||||
}
|
||||
|
||||
// 启动图片显示定时器
|
||||
|
||||
11
src/main.ts
11
src/main.ts
@@ -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')
|
||||
|
||||
// ============================================
|
||||
|
||||
Reference in New Issue
Block a user