windows - IIS Omdøbt billeder viser stadig tidligere indhold - Caching problem?

Indlæg af Hanne Mølgaard Plasc

Problem



På vores hjemmeside ved hjælp af IIS 8 serverer vi færdige jpg'er på en billedstyringsskærm. Billederne er på en separat harddisk, der er forbundet i IIS via en virtuel mappe. Alle billederne er navngivet med entiteten ID efterfulgt af foto nummeret. Så:


Photo 1: 58935928.1.jpg
Photo 2: 58935928.2.jpg
Photo 3: 58935928.3.jpg


Hvis jeg vil omorganisere foto 3 til foto slot 1, skal jeg omdøbe foto 3 til 58935928.3.jpg.TEMP og omdøbe foto 1 til 58935928.3.jpg og derefter 58935928.3.jpg.TEMP til 58935928.1.jpg. Det virker fint. Men når du ser siden og forfrisker det, er de billeder, der er returneret til 58935928.1.jpg, stadig det gamle billede, før det blev omdøbt. Efter ca. 5-10 minutter vil en opdatering nu vise de korrekte billeder.


Vi troede det var et problem med browsing caching. Ctrl-F5-kraftopdatering har ikke rettet det og indstillet ingen cachemetadata på siden heller ikke. Vi bemærkede, at når dette sker, og vi går til forskellige browsere, vises billederne stadig forkert. Dette fører os til at tænke server side caching siden en ny browser instans er også at få det forkerte billede.


Vi gik i iis og konfigureret output caching til ingen cache på kernal og bruger bare for at se om det ville rette det. Ingen forskel. Vi ønsker ikke at gå så hårdt som at deaktivere cache på alt, bare jpg'er ville være fint.


Hvorfor sker det her? Dette forårsager forvirring for vores brugere, da de ombestiller billederne, og de reorderes faktisk på filsystemet, men IIS ser ud til at betjene det gamle billede i stedet for det nye.

Bedste reference


Jeg tog fejl, da jeg sagde, at mappen blev monteret som en virtuel mappe. Det var faktisk et monteret volumen. Jeg kan ikke se, hvordan det gør forskel på nogen måde. Men når jeg fjernede det som et monteret volumen og lavede det til en virtuel mappe, fungerede alt ordentligt.


Så i mit tilfælde var det fordi alle billederne var på et monteret volumen, der forårsagede problemet.