Bir web uygulaması değişti yeni görüntüler, yüklemek nasıl

3 Cevap php

How to push new images in a web application, so that the cached is not taken? When I am having a new JS or CSS file, it's easy. Because they are in smarty templates, and I am having a version number in the URL (like a.js?v=9).

Şimdi, görüntülerle sorun vardır: -

Onlar CSS dosyalarından denir, ve ben orada bir sürüm değişken olamaz.

Peki, bunu nasıl yaparsınız?

3 Cevap

Ortada temiz ve en kolay yolu arasında, I would:

  • In the CSS, point to images with URLs containing a distinct marker ; like "image.png?VERSION_NUMBER" (literaly)
    • Bu Gelişen ise CSS dosyası kullanılacak sağlayacak
    • Önbellek ile herhangi bir sorunu önlemek için, ben tarayıcı tarafından önbelleğe edilmeyecek dosyaları belirtmek için (geliştirme makinede) Apache yapılandırmak istiyorum
  • I would use some kind of "build process", that would replace this VERSION_NUMBER marker by the real version number in every CSS file (and possibly, JS, PHP, HTML, ... )
    • Bu doğru sürüm numarasını içeren, değiştirilmiş dosyaları yaratacak
    • Bu dosyalar webserver konuşlandırıldı olanlar olacak
    • İdeal olarak, VERSION_NUMBER her dosyanın SVN revizyon olabilir; Bu şekilde, sadece gerçekten değiştirilmiş dosyaları modifiye olurdu; ama aynı zamanda zor: her bir dosyanın (! CSS dosyasındaki her URL) için, bu işaretleyici değiştirmeden önce revizyon sayı belirlemek zorunda!

Bazı tarayıcı çünkü sorgu dizesi cache images / js / css yapmazsanız, işaretleyici dosyaları 'isimleri dahil olabilir.

Ve şimdi bir "inşa süreci" olduğunu, ayrıca örneğin, JS ve CSS dosyaları minifying gibi, diğer bazı manipülasyonlar yapmak için kullanabilirsiniz

Bir yan not olarak: evet, inşa süreci / komut dosyası oluşturma ve test biraz zaman alır; Bu akıllıca olmaz, bu (muhtemelen daha! PHP sayfa başına en az bir) sürüm numarasını belirtmek için bu bir değişkeni kullanarak ... Ama, performansları için, CSS dosyaları hizmet veren, PHP ile sunucu CSS dosyaları daha kolay olabilir ; bu nedenle, muhtemelen daha iyi inşa sürecini yazmak için biraz daha zaman alacak ...

Elle görüntü url ucuna bir "? V = 1" koyun, görüntü dosyasını değiştirmek aynı zamanda CSS dosyasını değiştirebilir.

Ayrıca PHP işlemcisi ile CSS dosyaları göndermek için sunucunuzu yapılandırabilirsiniz, böylece görüntü url üzerinde "? V = 8" sorgu dizesi ayarlamak için orada bazı PHP kodu sopa olabilir.

Benim inşa sürecinin bir parçası olarak, javascript için bir sorgu dizesi bir sürece dosyanın LastModified tarih / zaman vardır resim URL'leri içeren ve ekleme. Bu zaman olması gerektiği önbelleğe alma çalışmasını sağlar, ve geliştirici unutmak için kolay bir şey otomatikleştirir.