Expire local static assets after 24 hours

This commit is contained in:
2026-06-07 19:29:04 +08:00
parent f47132a653
commit 4d1a01ec71
5 changed files with 395 additions and 30 deletions
+30 -4
View File
@@ -29,9 +29,35 @@ func (s *Server) startLocalTempAssetCleanup(ctx context.Context) {
}
func (s *Server) cleanupExpiredLocalTempAssets(ctx context.Context, now time.Time) int {
storageDir := strings.TrimSpace(s.cfg.LocalUploadedStorageDir)
targets := []localTempAssetCleanupTarget{
{
StorageDir: s.cfg.LocalGeneratedStorageDir,
FallbackDir: config.DefaultLocalGeneratedStorageDir,
MarkRequestAsset: false,
},
{
StorageDir: s.cfg.LocalUploadedStorageDir,
FallbackDir: config.DefaultLocalUploadedStorageDir,
MarkRequestAsset: true,
},
}
deleted := 0
for _, target := range targets {
deleted += s.cleanupExpiredLocalTempAssetsInDir(ctx, now, target)
}
return deleted
}
type localTempAssetCleanupTarget struct {
StorageDir string
FallbackDir string
MarkRequestAsset bool
}
func (s *Server) cleanupExpiredLocalTempAssetsInDir(ctx context.Context, now time.Time, target localTempAssetCleanupTarget) int {
storageDir := strings.TrimSpace(target.StorageDir)
if storageDir == "" {
storageDir = config.DefaultLocalUploadedStorageDir
storageDir = target.FallbackDir
}
entries, err := os.ReadDir(storageDir)
if err != nil {
@@ -44,7 +70,7 @@ func (s *Server) cleanupExpiredLocalTempAssets(ctx context.Context, now time.Tim
expiredBefore := now.Add(-ttl)
deleted := 0
for _, entry := range entries {
if entry.IsDir() || !strings.HasPrefix(entry.Name(), requestAssetFilePrefix) {
if entry.IsDir() {
continue
}
info, err := entry.Info()
@@ -60,7 +86,7 @@ func (s *Server) cleanupExpiredLocalTempAssets(ctx context.Context, now time.Tim
continue
}
deleted++
if s.store != nil {
if target.MarkRequestAsset && strings.HasPrefix(entry.Name(), requestAssetFilePrefix) && s.store != nil {
if err := s.store.MarkRequestAssetExpiredByLocalPath(ctx, localPath, now); err != nil && !store.IsUndefinedDatabaseObject(err) {
s.logger.Warn("mark local temp asset expired failed", "path", localPath, "error", err)
}