2016-10-08 8 views
5

Yanıtların 'önbelleğe alındığında' ne zaman yeniden hesaplandığını kontrol etmek istiyorum. Örnek olarakSuave - Yanıtlar önbelleğe alındığında veya yeniden hesaplandığında kontrol edin

:

[<EntryPoint>] 
let main [| port |] = 

    let config = 
     { defaultConfig with 
       bindings = [ HttpBinding.mk HTTP IPAddress.Loopback (uint16 port) ] 
       listenTimeout = TimeSpan.FromMilliseconds 3000. 
       } 

    let appDemo:WebPart = 
     DateTime.Now.ToString() 
     |> sprintf "Server timestamp: %s" 
     |> Successful.OK 

    startWebServer config appDemo 

Yukarıda sunucusu işletmek ve sonra bunu geri aynı zaman damgası almak her zaman birkaç kez vurursanız. Tahmin ettiğim şey mantıklı; appDemo sadece ilk defa hesaplanan ve bir daha asla tekrar edilmeyen bir ifadedir, değil mi?

Bu durumda, her istek için appDemo'un 'yeniden hesaplanmasını' isteyebilirim. Bunu nasıl yaparım? Dokümanlardaki bir örneği bulamıyorum.

cevap

9

bu deneyin - ne kadar yüksek olsa "deyimsel Suave" ölçekte puanları emin: Bu AppDemo değerlendirilir anda yakalanan çünkü sen aynı değeri görüyoruz ki haklısınız

let appDemo:WebPart = 
    request (fun req -> 
     DateTime.Now.ToString() 
     |> sprintf "Server timestamp: %s" 
     |> Successful.OK) 

. Bu, F #'nin nasıl çalıştığıyla ilgili bir özelliktir ve Suave'in önbelleğe almasıyla ilgisi yoktur.

WebPart türünün HttpContext -> Async<HttpContext option> işlevi için bir diğer ad olduğunu unutmayın. Bu nedenle, her seferinde bir kez hesaplanmak yerine, her istekte yeniden hesaplanır.

İlgili konular