§Play Cache API
Cache API’nin varsayılan gerçeklemesi EHCache kullanır. Bir plugin aracılığıyla siz de kendi gerçeklemenizi sağlayabilirsiniz.
§Cache API’yi uygulamaya dahil etmek
Bağımlılık listenize cache
ekleyin. Örneğin, build.sbt
içinde:
libraryDependencies ++= Seq(
cache,
...
)
§Cache API’ye erişmek
Cache API play.api.cache.Cache
nesnesi tarafından sağlanır. Bu nesne kayıtlı bir önbellek pluginine ihtiyaç duyar.
Not: Bu API çeşitli gerçeklemelerin kullanılabilmesi için özellikle küçük tutulmuştur. Daha özel bir API gereksinimi olması durumunda kendi Cache plugininiz tarafından sağlananı kullanabilirsiniz.
Bu basit API’yi kullanarak önbellekte veri saklayabilirsiniz:
Cache.set("item.key", connectedUser)
Ve bu veriyi daha sonra okuyabilirsiniz:
val maybeUser: Option[User] = Cache.getAs[User]("item.key")
Ayrıca veri varsa okumak ya da yoksa değerini önbellekte setlemek için bir de yardımcı vardır:
val user: User = Cache.getOrElse[User]("item.key") {
User.findById(connectedUser)
}
Bir veriyi önbellekten silmek için remove
metodunu kullanabilirsiniz:
Cache.remove("item.key")
§HTTP yanıtlarını önbelleğe almak
Standart Action birleştirmeyi kullanarak akıllı önbellekli action’lar yaratabilirsiniz.
Not: Play HTTP
Result
nesneleri önbelleğe almak ve daha sonra tekrar kullanmak için uygundurlar.
Play standart kullanımlar için dahili bir yardımcı sağlar:
def index = Cached("homePage") {
Action {
Ok("Hello world")
}
}
Ve hatta:
def userProfile = Authenticated {
user =>
Cached(req => "profile." + user) {
Action {
Ok(views.html.profile(User.find(user)))
}
}
}
§Önbellek kontrolü
Neyi önbelleğe alacağınızı ya da neyi önbellekten hariç tutacağınızı kolayca belirleyebilirsiniz.
Yalnızca 200 Ok yanıtlarını önbelleğe almak isteyebilirsiniz.
def get(index: Int) = Cached.status(_ => "/resource/"+ index, 200) {
Action {
if (index > 0) {
Ok(Json.obj("id" -> index))
} else {
NotFound
}
}
}
Ya da 404 Not Found yanıtlarını yalnızca birkaç dakika için önbelleğe almak isteyebilirsiniz.
def get(index: Int) = {
val caching = Cached
.status(_ => "/resource/"+ index, 200)
.includeStatus(404, 600)
caching {
Action {
if (index % 2 == 1) {
Ok(Json.obj("id" -> index))
} else {
NotFound
}
}
}
}
Sonraki: Web servisleri çağırmak
Dokümantasyonun bu çevirisi Play ekibi tarafından yapılmamaktadır. Eğer bir hata bulduysanız, bu sayfanın kaynak kodu burada bulunmaktadır. Dokümantasyon yönergelerini okuduktan sonra lütfen katkı yapmaktan çekinmeyin.