Documentation

You are viewing the documentation for the 2.3.x release series. The latest stable release series is 2.5.3.

§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.