web-gelistirme-sc.com

Tarayıcıda önbellek / tarayıcı verilerini temizlemeye nasıl zorlanır?

Senaryo: Eski bir Joomla! web sitesinden 2.5'ten Joomla! Bunu yaptıktan sonra benim açımdan site olması gerektiği gibi görünüyor. Yükseltmeden önce siteye daha önce erişmiş olan başka bir bilgisayardan siteye erişmeye çalışırsam, CSS eski görünüyor.

Çözüm: Bunu düzeltmek için, önbelleği ve tarayıcıda göz atma verilerini temizlerim ve sorunlar giderilir.

Önleme tedbirleri: Özel bileşenlerime baktım ve yerinde önbellek kaydetme mekanizması yok, bu yüzden ben sanırım bu bir tarayıcı tarafı sorunudur. Soru şu, bunun gelecekte olmasını nasıl önleyebilirim?

Akıl yürütme: Önceki kullanıcılarım siteye erişirse her şey kötü görünecek ve önbelleklerini yenilemek zorunda olduklarını bilmelerini bekleyemem.

Araştırma:

Joomla sürümüne baktım ( https://www.joomlart.com/tutorials/joomla-tutorials/tutorial-how-to-enable-content-versioning-in-joomla-site )

Önbellek temizliğine baktım ( https://forum.joomla.org/viewtopic.php?t=949662 )

Hiçbir şey somut bir çözüm gibi görünmüyor.

Bu tür durumlar için "en iyi uygulama" varsa lütfen paylaşın, bu konuda her şeyi öğrenmekten memnuniyet duyarım.

4
Nick

Aynı problemle birçok kez karşılaştım. Bu arada bir tarayıcı önbelleğini temizlemek için zorlamak sadece varlıklar yükleme sürümleme olabilir öğrendim. Bu nedenle, şablonunuzun CSS dosyalarını nereye yüklediğini bulmanız ve yükleme komutunun sonuna "? V = xxx" gibi bir tür sürüm dizesi eklemeniz gerekir. Tarayıcı önceki sürüm dizesini önbelleğe aldığında, sürüm numarasını artırarak bu varlığı yeniden yüklemeye zorlayabilirsiniz.

Bu sadece bildiğim "en iyi uygulama". Şimdiye kadar bu prosedürü otomatikleştirebilecek bir sistem eklentisi yoktur, bu yüzden varlıklarını yükleyen karşılık gelen şablonun .php dosyasını düzenleyerek manuel olarak yapmanız gerekir (genellikle bir tür index.php).

Aynı hile .js dosyalarını yeniden yüklemek için de kullanılabilir, ancak bunlar sorunuzun ve endişenizin bir parçası değildir.

4
Mikan

mediaVersion kullanabilirsiniz. Bunu yapmanın birkaç yolu var. Şu 2'ye bakın:

Yüklenen dosyalara manuel olarak sürüm ekleme: $v = JFactory::getDocument()->getMediaVersion()

JHtml yüklenen dosyaların sürümleri:

// Add script
JHtml::_('script', 'xxx.js', array('version' => 'auto'));
// Add Stylesheets
JHtml::_('stylesheet', 'xxx.css', array('version' => 'auto'));
3
Alexandr

İstemci tarayıcılarının önbelleğini güvenilir bir şekilde bozmanın tek yolu, söz konusu varlığın adını değiştirmektir; tüm tarayıcıları indirmeye zorlar.

1
Seth Warburton

CSS ve Java gibi tüm komut dosyalarının dağıtımını birleştirmek ve optimize etmek için JCH Optimize'i kullanabilirsiniz. Eklentideki önbelleği temizlediğinizde, her bir dosya yeni bir ad alır.

Her zaman son derece etkili ve tüm paraya değer PRO sürümünü kullanıyorum.

1
KlintWeb

Dosyanın önbelleğe alınmaması için dosyanın zaman damgasını parametre olarak ekleyin.

$mtime = filemtime('/path/to/script/script.js');
JFactory::getDocument()->addScript('/url/of/script/script.js?t='.$mtime);
1
Nagarjun