From 577b63b7e74094260a85826595f3978a9d154971 Mon Sep 17 00:00:00 2001 From: Andreas Knuth Date: Fri, 12 Jun 2026 15:06:55 -0500 Subject: [PATCH] image caching optimized --- bizmatch-server/src/main.ts | 5 +++++ .../details-commercial-property-listing.component.ts | 4 ++-- .../commercial-property-listings.component.html | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/bizmatch-server/src/main.ts b/bizmatch-server/src/main.ts index b4e8d38..53be59b 100644 --- a/bizmatch-server/src/main.ts +++ b/bizmatch-server/src/main.ts @@ -16,6 +16,11 @@ async function bootstrap() { //app.use('/bizmatch/payment/webhook', bodyParser.raw({ type: 'application/json' })); // Serve static files from pictures directory app.use('/pictures', express.static(PICTURES_DIR)); + // Prevent browsers from caching 404s on /pictures/* + app.use('/pictures', (_req, res) => { + res.set('Cache-Control', 'no-store'); + res.status(404).end(); + }); app.setGlobalPrefix('bizmatch'); diff --git a/bizmatch/src/app/pages/details/details-commercial-property-listing/details-commercial-property-listing.component.ts b/bizmatch/src/app/pages/details/details-commercial-property-listing/details-commercial-property-listing.component.ts index a8d4355..bb00215 100644 --- a/bizmatch/src/app/pages/details/details-commercial-property-listing/details-commercial-property-listing.component.ts +++ b/bizmatch/src/app/pages/details/details-commercial-property-listing/details-commercial-property-listing.component.ts @@ -161,7 +161,7 @@ export class DetailsCommercialPropertyListingComponent extends BaseDetailsCompon } if (this.listing.imageOrder && Array.isArray(this.listing.imageOrder)) { this.listing.imageOrder.forEach(image => { - const imageURL = `${this.env.imageBaseUrl}/pictures/property/${this.listing.imagePath}/${this.listing.serialId}/${image}`; + const imageURL = `${this.env.imageBaseUrl}/pictures/property/${this.listing.imagePath}/${this.listing.serialId}/${image}?_ts=${new Date(this.listing.updated).getTime()}`; this.images.push(new ImageItem({ src: imageURL, thumb: imageURL })); }); } @@ -185,7 +185,7 @@ export class DetailsCommercialPropertyListingComponent extends BaseDetailsCompon yearBuilt: (this.listing as any).yearBuilt, images: this.listing.imageOrder?.length > 0 ? this.listing.imageOrder.map(img => - `${this.env.imageBaseUrl}/pictures/property/${this.listing.imagePath}/${this.listing.serialId}/${img}`) + `${this.env.imageBaseUrl}/pictures/property/${this.listing.imagePath}/${this.listing.serialId}/${img}?_ts=${new Date(this.listing.updated).getTime()}`) : [] }; this.seoService.updateCommercialPropertyMeta(propertyData); diff --git a/bizmatch/src/app/pages/listings/commercial-property-listings/commercial-property-listings.component.html b/bizmatch/src/app/pages/listings/commercial-property-listings/commercial-property-listings.component.html index 6b51629..b6e0221 100644 --- a/bizmatch/src/app/pages/listings/commercial-property-listings/commercial-property-listings.component.html +++ b/bizmatch/src/app/pages/listings/commercial-property-listings/commercial-property-listings.component.html @@ -44,7 +44,7 @@ @if (listing.imageOrder?.length>0){ -