Hello, >> Well for changing the tutorial form into an ajax form I guess the best >> solution is to store the model instance in a RequestVar and simply set it to >> a new instance after saving. So I don't have any immediate use-cases. >> >> But in other (Seam) projects I remember that I used the event scope >> (corresponding to TransientRequestVar) quite often, for example to have a >> single-request cache (things which may be invalidated even on the next ajax >> request). >> >> Also, I suppose that you need to hold a reference to all RequestVars as long >> as the user doesn't request another page, or as long as his session doesn't >> time out. You don't know if the page will make ajax callbacks or not, right? > > Sure we know since Lift's ajax functions that have bound Scala > functions are inherently kept on the LiftSession. RequestVar's are > preserved (and not only them) by a mechanism that we call snaphot- > restorer which simply based on Scala's reference capturing.
Right, but still, you don't know which variables are going to be used, so you need to keep them all. So if a page doesn't use ajax RequestVars are dereferenced right after the http request finishes? >> And even if you knew, you wouldn't know if the callbacks are going to use >> the vars. So potentially there may be a memory problem. I would expect >> request vars to be a bit "lighter" (a TransientRequestVar can be discarded >> right after >the request processing finished). > > I really doubt the memory is an issue here. The amount of RequestVars > used is typically quite low. Typically - yes, but I can bet there will be usages which will require a lot of them. I would not close the possibility for developers to decide if they want to store a variable in the real/transient request scope or in the page/request scope just because typically users want page/request scope variables. Maybe this should be the "default", but certainly not the only option. > Keep in mind that bound functions are subject to a garbage collection > mechanism built in Lift. You may have noticed periodical __lift_GC__ > Ajax request being sent from browser. This is a lease mechanism. So if > bound functions are not "revitalized" they will expire and will be > removed. I'll have to read up on how Lift handles this, I guess there was a chapter in the book :) -- Adam -- You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to lift...@googlegroups.com. To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/liftweb?hl=en.