2012-11-13 16 views
10

Tworzę aplikację internetową z MVC4 i C#.Jak wygasić buforowany obraz bez uderzania F5?

jestem pozwalając użytkownikowi na przesyłanie obrazu na zdjęciu profilowym. W tej chwili potrzebuję wygaśnięcia poprzedniego zdjęcia profilowego, aby po ponownym załadowaniu strony przeglądarka wyświetliła nowy obraz. Obecnie, ponieważ oba obrazy mają tę samą nazwę, przeglądarka używa poprzedniego obrazu, który został zapisany w pamięci podręcznej zamiast nowego obrazu.

Gdybym zmusić przeglądarkę, aby przeładować z F5 pokazuje nowy obraz. Jak upewnić się, że użytkownik powracający na swoją stronę profilu zobaczy nowy obraz, a nie ten w pamięci podręcznej przeglądarki bez uderzania F5?

+5

Jak o zmianę nazwy? + google dla 'If-Modified-Since' – zerkms

Odpowiedz

6

Możesz dodać obojętne parametr na końcu nazwy pliku obrazu. Na przykład:

<img src="...\avatar.jpg?d=7615833"> 

gdzie liczba jest przypadkowa lub znacznik czasu. Zostanie zignorowany, ale obecność zmusi przeglądarkę do ponownego załadowania obrazu.

+0

Dlaczego więc nie używać' no-cache'? Losowy parametr jest po prostu brzydki – zerkms

+0

Czy nie musiałby dodawać tego samego numeru za każdym razem, jeśli chce zapobiec ponownemu załadowaniu obrazu? – neeKo

+3

Być może użyj zmienionej daty pliku lub skrótu jego zawartości. – CodesInChaos

2

Podczas zapisywania obrazu na serwerze, dodać (statyczny) fragment tekstu przypadkowej nazwy pliku i ponownie wygenerować go, gdy zmienia się obraz. W ten sposób przeglądarka buforuje obraz, gdy jest taki sam, i ponownie go ładuje, gdy zmienia się, co daje pożądane zachowanie bez niepotrzebnego czasu ładowania strony.

Powiązane problemy