Arka fon
İki pro-bono web sitesi için çok basit bir CGI tabanlı (Perl) içerik yönetim aracı yazıyorum ve kullanıyorum. Web sitesi yöneticisine, alanları (tarih, yer, başlık, açıklama, bağlantılar vb.) Doldurup kaydettikleri etkinlikler için HTML formları sağlar. Bu formda, yöneticinin olayla ilgili bir resim yüklemesine izin veriyorum. Formu görüntüleyen HTML sayfasında, yüklenen resmin (HTML img etiketi) bir önizlemesini de gösteriyorum.
Sorun
Sorun, yönetici resmi değiştirmek istediğinde ortaya çıkar. Sadece "göz at" düğmesine basması, yeni bir resim seçmesi ve tamam'a basması gerekirdi. Ve bu iyi çalışıyor.
Görüntü yüklendikten sonra, arka uç CGI yüklemeyi yönetir ve formu düzgün bir şekilde yeniden yükler.
Sorun gösterilen görüntü olmasıdır gelmez yenilenmesini olsun. Veritabanı doğru resmi tutsa bile eski resim hala gösterilmektedir. Görüntüyü web tarayıcısında önbelleğe alındığına kadar daralttım. Yönetici Firefox / Explorer / Safari'de YENİDEN YÜKLE düğmesine basarsa, her şey iyi bir şekilde yenilenir ve yeni görüntü belirir.
Çözümüm - Çalışmıyor
Önbelleği, geçmişte çok uzak bir tarihe sahip bir HTTP Expires talimatı yazarak kontrol etmeye çalışıyorum.
Expires: Mon, 15 Sep 2003 1:00:00 GMT
Ben idari tarafta olduğumu ve sayfaların her zaman süresi dolduğu için yüklenmesinin biraz daha uzun sürmesini gerçekten umursamadığımı unutmayın.
Ancak bu da çalışmıyor.
notlar
Bir görüntüyü karşıya yüklerken, dosya adı veri tabanında tutulmaz. Image.jpg olarak yeniden adlandırılmıştır (onu kullanırken basitçe bir şeyler ortaya çıkarmak için). Mevcut görüntüyü yenisiyle değiştirirken isim de değişmez. Sadece görüntü dosyasının içeriği değişir.
Web sunucusu, barındırma hizmeti / ISS tarafından sağlanır. Apache kullanır.
Soru
Web tarayıcısını resimleri değil, bu sayfadaki şeyleri önbelleğe almamaya zorlamanın bir yolu var mı?
Veritabanıyla birlikte "dosya adını kaydetme" seçeneğiyle hokkabazlık yapıyorum. Bu şekilde, görüntü değiştirilirse, IMG etiketinin src'si de değişecektir. Ancak, bu site genelinde çok fazla değişiklik gerektiriyor ve daha iyi bir çözümüm varsa bunu yapmamayı tercih ediyorum. Ayrıca, yüklenen yeni görüntü aynı ada sahipse bu yine de çalışmayacaktır (örneğin görüntünün biraz photoshop yapıldığını ve yeniden yüklendiğini söyleyin).