File tree Expand file tree Collapse file tree 2 files changed +19
-10
lines changed
packages/ssr-daisyui/app/features/image-service Expand file tree Collapse file tree 2 files changed +19
-10
lines changed Original file line number Diff line number Diff line change 11import { type LoaderFunctionArgs } from 'react-router'
22
33import { processImageUrl } from '~/features/image-service/services/process-image-url.ts'
4- import { logger } from '~/lib/logger.ts'
54
65import {
76 getCachedImage ,
87 getCacheKey ,
9- purgeCache ,
8+ purgeCacheOnStartup ,
109 setCachedImage ,
1110} from '../services/image/cache.server.ts'
1211import { fetchImage } from '../services/image/fetch.server.ts'
1312import { parseImageParams , transformImage } from '../services/image/transform.server.ts'
1413
15- // Purge cache once on server startup in development
16- if ( process . env . NODE_ENV === 'development' ) {
17- logger . debug ( 'Purging image cache on server startup (development mode)' )
18- purgeCache ( ) . catch ( ( error ) => {
19- logger . error ( 'Failed to purge image cache on startup:' , error )
20- } )
21- }
22-
2314export async function loader ( { request } : LoaderFunctionArgs ) {
15+ // Purge cache once on server startup in development
16+ if ( process . env . NODE_ENV === 'development' ) {
17+ purgeCacheOnStartup ( )
18+ }
2419 const url = new URL ( request . url )
2520 const src = processImageUrl ( url . searchParams . get ( 'src' ) || '' )
2621
Original file line number Diff line number Diff line change @@ -3,9 +3,13 @@ import fs from 'fs/promises'
33import path from 'path'
44
55import { CACHE_DIR } from '~/features/image-service/config.server.ts'
6+ import { logger } from '~/lib/logger.ts'
67
78import { type ImageTransformOptions } from './types'
89
10+ // Track if we've already purged the cache this session
11+ let cacheAlreadyPurged = false
12+
913export async function deleteCachedImage ( cacheKey : string ) : Promise < boolean > {
1014 try {
1115 const cachePath = path . join ( CACHE_DIR , `${ cacheKey } .bin` )
@@ -108,6 +112,16 @@ export async function purgeCache(maxAge?: number): Promise<{ deleted: number; er
108112 return { deleted, errors }
109113}
110114
115+ export function purgeCacheOnStartup ( ) : void {
116+ if ( ! cacheAlreadyPurged ) {
117+ cacheAlreadyPurged = true
118+ logger . debug ( 'Purging image cache on server startup (development mode)' )
119+ purgeCache ( ) . catch ( ( error ) => {
120+ logger . error ( 'Failed to purge image cache on startup:' , error )
121+ } )
122+ }
123+ }
124+
111125export async function setCachedImage ( cacheKey : string , buffer : Buffer ) : Promise < void > {
112126 try {
113127 await fs . mkdir ( CACHE_DIR , { recursive : true } )
You can’t perform that action at this time.
0 commit comments