IMHO, Fonksiyonel Reaktif Programlama (FRP), bir anlamda önbellek geçersiz kılmayı çözmenin genel bir yoludur.
İşte nedeni: FRP terminolojisindeki eski verilere aksaklık denir . FRP'nin hedeflerinden biri, aksaklıkların olmamasını garanti etmektir.
FRP, bu 'FRP'nin Özü' konuşmasında ve bu SO cevabında daha ayrıntılı olarak açıklanmıştır .
Gelen konuşCell
s önbelleğe alınmış Nesne / Varlık temsil etmek ve bir Cell
's bağımlılık biri yenilenir eğer yenilenir.
FRP, bağımlılık grafiğiyle ilişkili tesisat kodunu gizler ve eski URL'lerin bulunmadığından emin olur Cell
.
Düşünebildiğim başka bir yol (FRP'den farklı), hesaplanan değeri (türünün b
) bir tür yazıcıya sarmaktır Writer (Set (uuid)) b
; burada Set (uuid)
(Haskell gösterimi), hesaplanan değerin b
bağlı olduğu değişken değerlerin tüm tanımlayıcılarını içerir . Öyleyse, uuid
hesaplananın b
bağlı olduğu değişken değeri / değişkeni (bir veritabanındaki bir satır gibi) tanımlayan bir tür benzersiz tanımlayıcıdır .
Bu fikri, bu tür bir yazıcı Monad üzerinde çalışan birleştiricilerle birleştirin ve bu birleştiricileri yalnızca yeni bir hesaplamak için kullanırsanız, bir tür genel önbellek geçersiz kılma çözümüne yol açabilir b
. Bu tür birleştiriciler (özel bir versiyonu diyelim filter
) Writer monadlarını ve -s'yi (uuid, a)
girdiler olarak alırlar , burada a
değiştirilebilir bir veri / değişken, tarafından tanımlanır uuid
.
Bu nedenle , hesaplanan tür değerinin bağlı olduğu "orijinal" verileri (uuid, a)
(örneğin b
, hesaplanan bir veritabanındaki normalleştirilmiş verileri ) her değiştirdiğinizde , hesaplanan değerin bağlı olduğu herhangi bir değeri değiştirirseniz b
, içeren önbelleği geçersiz kılabilirsiniz. , çünkü Writer Monad'a dayanarak bunun ne zaman gerçekleştiğini anlayabilirsiniz.b
a
b
Set (uuid)
Yani bir verili bir şeyi her mutasyona uğrattığınızda uuid
, bu mutasyonu tüm cache-lere yayınlarsınız ve bunlar b
, belirtilen değişken değere bağlı olan değerleri geçersiz kılar uuid
çünkü b
içine sarılmış olan Writer monad, bunun b
söylenen uuid
veya değil.
Tabii ki, bu sadece yazdığınızdan çok daha sık okursanız işe yarar.
Üçüncü, pratik bir yaklaşım, veri tabanlarında somutlaşmış görünümleri kullanmak ve bunları önbellek olarak kullanmaktır. AFAIK ayrıca hükümsüzlük sorununu çözmeyi amaçlamaktadır. Bu elbette, değiştirilebilir verileri türetilmiş verilere bağlayan işlemleri sınırlar.