2016-03-22 9 views
0

Uygulamamın, iç hizmetlerden bazılarının aynı resimleri sürekli olarak indirmesi ve bunları barındırması gerekiyor. Görüntüleri almak için planlanmış bir aktör uygulayarak bunu hayata geçirdim.Oynat 2 ve önbelleğe alma varlıkları

GET  /public/*file  controllers.Assets.at(path="/public", file) 

Ama http://server/public/assets/image.png aracılığıyla bir görüntü erişmeye çalıştığınızda nedense, ben güncelleme görmüyorum: Bu /public/analytics altındakiler bu varsayılan rota kümesine sahip yerleştirir. Bence sorun önbelleğe alınmış. Barındırma işine girdiğimde, /public/analytics'da bulunan güncellenmiş resmi görüyorum, böylece önbelleğe almalı.

Ben Global bu eklemeye çalıştık:

override def doFilter(action: EssentialAction): EssentialAction = EssentialAction { request => 
    import play.api.http.HeaderNames 
    action.apply(request).map(_.withHeaders(
     HeaderNames.CACHE_CONTROL -> "no-cache", 
     HeaderNames.PRAGMA -> "no-cache" 
    )) 
    } 

Ama sonuç yine aynı. Ayrıca görüntü URL'sini aldığımda no-cache başlıklarını görüyorum. Her defasında yeni url üretmeye yönelik bir öneri gördüm, ancak bunu yapamam.

Herhangi bir fikir yanlış olabilir ne olabilir?

cevap

0

Assets denetleyicisini (you're getting caching, compression, etc support "out of the box") kullandığınız anda - ama aslında bunu istemezsiniz!

keşfettiğiniz gibi

, bu yerde önbelleğe bırakın, ama her şey için max-age bir çok kısa belirtmektir belkide bu sorunu çözmek için en kolay yolu başka kaynaklardan içeriğini sunmak için çok uygun bir yoldur.

source of Assets görüntüleniyorsa, bir assets.defaultCache belirtmişseniz, bunu yapabilirsiniz; yani senin application.conf yılında:

sadece yenisiyle istemeden önce 30 saniye boyunca bir varlık koruyacaktır standartlara saygı tarayıcı anlamına gelir
assets.defaultCache="public, max-age=30" 

. En iyi verim elde etmek için planlanmış yeniden kazanılan aktörünüzün periyodunu bu şekilde yapabilirsiniz.

+0

Ne yazık ki bu işe yaramıyor - 30 saniye beklesem bile hala eski görüntüyü alıyorum. Önbelleği kapatmaya çalıştım, cevabımda yayınladığım kodu görüyorum - ve hala eski görüntü almaya devam ediyorum. Sadece normal 'Eylem' üzerinden görüntü alma uygulandığında, tepki göstermeyi başarabiliyordum ama bu yaklaşımın iyi olduğundan emin değilim. – Archeg

+0

3 saat sonra bile hala eski görüntüyü alıyorum. Buna neden olabilecek önbellek dışında başka bir şey var mı? – Archeg