2014-07-10 46 views
7

Köşeli uygulamamda önbellek bozmayı uygulamaya çalışıyorum, ancak önbelleğe almaya izin verecek, ancak yeni kodu üretime her basışımızda koparacak. Şimdiye kadar benim kurulum, birleştirilmiş hizalı app.js dosyamdan kazmak ve bir .html dosya uzantısında biten herhangi bir dizgeye sorgu paramlarını eklemek için grunt önbellek kırıcıyı https://www.npmjs.org/package/grunt-cache-breaker kullanmayı içerir. Bunu, bir ng-include kullanan herhangi bir şablon dosyası için de yapıyorum. Bu yaratılan bir sorun şu ki, ilk olarak şablon dosyamı bir dist/dizinine kopyalamam gerekiyor, bu yüzden güvenli bir şekilde önbelleğe alınabilir. Önbellek bozulduğu zaman, tüm şablonlarımı işlemek zorunda kalmamalı ve önbellek her yakalandığında (ve çakışma yaratır) .Bu, şablon önbellek bozma için açısal olarak iyi bir yöntem midir?

Sorum, bunu yeni kod üzerinde şablon önbelleğe almanın önlenmesinin pratik bir yolu olup olmadığına ilişkin bir akıl kontrolünü nasıl yapacağını değil, bunun nasıl yapılacağını anlatmaktır. Şablonları önbelleğe almayı devre dışı bırakma örneklerini görmüştüm ama dosyalar değişmediğinde kod itmeleri arasında kullanmak isteyeceğim bir şey gibi görünüyor.

Diğerleri bu konuda nasıl geziniyor?

cevap

9

Popüler bir yaklaşım, tüm şablonlarınızı önbelleğe alan bir JS dosyası oluşturmak için ng-şablonları (grunt plugin ile) kullanmaktır. Ardından, JS dosyasını sürümüne almak için usemin iş akışını bir varlık sürümlendirme göreviyle birlikte kullanın.

+0

+1 sürümlü versiyonlama – core

+0

Sonunda bunun için biraz zaman buldum. Açısal önbelleklerin nasıl kalıplandığı hakkında çok şey öğrendim. Bu zaten çok homurdanan bir proje üzerinde çözüm uygulamak için çok güzel ve basit biriydi. Ve önbellekleme sorunlarını çözmekten başka performans iyileştirmeleri getirdi. Bahşiş için teşekkürler. – Constellates

+0

@mfollett @Constellates, [angularjs-how-to-clear-routeproviders-caches-of-templateurl] 'a göre (http://stackoverflow.com/questions/20284976/angularjs-how-to-clear-routeproviders-caches- of-templateurl), eğer doğrudan '$ routeProvider' kullanırsak, zaten $ templateCache 'alırız. Bu yüzden, "grunt-açısal-şablonları" gerekli değildir. Sadece "usemin" yeterli olabilir. Yanılıyor olabilirim, ama sadece belirttiğiniz şeyleri analiz etmeye çalışıyorum. –

İlgili konular