On 6/29/07, Vlad Seryakov <[EMAIL PROTECTED]> wrote:
> What are you suggesting? i am not defending what is currently
> implemented but my only concern is backward compatibility, i have too
> many applications running on naviserver and many companies depend on it:-))


I'm not suggesting making any incompatible changes :-)

You're saying the Tcl page code uses the ADP engine, I'm saying it
doesn't. One of us is confused, and it's quite possibly me because I
find some of the ADP code tricky.

I've tried to explain but I think I've basically said the same thing
twice so I'm not sure that it's helping. Do you accept what I'm
saying, or is there something I've muddled up?


> Stephen Deasey wrote:
> > On 6/29/07, Vlad Seryakov <[EMAIL PROTECTED]> wrote:
> >> That may be not ideal but my goal was to use same engine (ADP) for
> >> caching and keep compatibility.
> >
> >
> > Right, but that's what I'm saying: it's not using the same engine
> > because Tcl pages are handled in a completely different way, but that
> > mechanism is wedged into the ADP engine.
> >
> >
> >> Also, performance-wise this is faster than the old mechanism.
> >
> >
> > I'm confused about which mechanisms are which. I can think of 3:
> >
> > - original mechanism:
> > http://naviserver.cvs.sourceforge.net/naviserver/naviserver/tcl/file.tcl?hideattic=0&view=markup
> >
> > - new mechanism 1 (effectively): page.adp: <% # your whole tcl page goes 
> > here %>
> >
> > - new mechanism 2: take above page and make it a proc (sounds exactly
> > like original mechanism actually)
> >
> > Which is better than which other?
> >
> >
> >> Anyway, to cache Tcl files, only proc can give
> >> that ability without re-parsing.
> >
> >
> > Either I'm confused about what's going on or I disagree :-)
> >
> > We have to agree on caching *what*.  The thing that's new to ADP is
> > *response* caching -- there has always been page-content-off-the-disk
> > caching and byte-code-that-corresponds-to-page-off-disk caching.
> > That's 3 different things that are being cached.
> >
> > Now, by turning Tcl pages into procs that's just a different way of
> > byte-code caching, which is already fully supported by the ADP engine.
> >
> > The first problem is that this is confusing because you throw the
> > switch for *reponse* caching but what you actually get is a different
> > method of byte-code caching.
> >
> > The second problem is that if turning the code into a proc is
> > noticeably faster than evaluating a Tcl string object, then why is it
> > only available for Tcl pages and not part of the ADP engine itself, as
> > it equally applies to ADP scripts in 'singlescript' mode.
> >
> > And, why is it optional?  Response caching changes the semantics of a
> > page, you can't just enable it for everything. But byte-code caching
> > is just a faster way of getting the same result. Why would you ever
> > want to turn this off?
> >
> >
> >> Stephen Deasey wrote:
> >>> There's some new ADP result caching functionality. How does this
> >>> affect Tcl pages which are now executed by the ADP engine?
> >>>
> >>>
> >>> nsd/adpparse.c: NsAdpParse():
> >>>
> >>> /*
> >>>  * Special case when we evalutating Tcl file, we just wrap it as
> >>>  * Tcl proc and save in ADP block with cache enabled or
> >>>  * just execute the Tcl code in case of cache disabled
> >>>  */
> >>>
> >>>
> >>> nsd/adpeval.c: AdpSource():
> >>>
> >>> /*
> >>>  * Turn off TCL mode after cached result, in caching mode
> >>>  * we wrap Tcl file into proc 'adp:filename' and return
> >>>  * as result only
> >>>  *      ns_adp_append {<% adp:filename %>}
> >>>  *
> >>>  * The output will be cached as result and every time we call
> >>>  * that Tcl file, cached command will be executed as long as
> >>>  * file is unchanged, if modified then the file will be reloaded,
> >>>  * recompiled into same Tcl proc and cached
> >>>  */
> >>>
> >>>
> >>> So when you enable result caching for ADP pages:
> >>>
> >>>   ns_section "ns/server/server1/adp"
> >>>   ns_param cache true
> >>>
> >>> or, in an adp page:
> >>>
> >>>   ns_adp_ctl cache true
> >>>
> >>> or:
> >>>
> >>>   ns_adp_include -cache 1200 myfile.adp
> >>>
> >>> what you're saying is after evaluating the script blocks in the adp,
> >>> and then combining them with the text blocks, cache that result and
> >>> don't re-execute the script blocks until the cache expires.
> >>>
> >>> But for Tcl pages something different is going on. The exact same
> >>> config file option enables caching but now it means take the contents
> >>> of the Tcl file, make it the body of a hidden proc, then execute it
> >>> every time the page is called. The output is not cached.
> >>>
> >>> In some respects this is fine. The commands that Tcl pages use:
> >>> ns_return, ns_write etc., aren't in any way hooked up to the guts of
> >>> the ADP code so it would require a some work to make response caching
> >>> work. Something for the future.
> >>>
> >>> My questions are:
> >>>
> >>> - does it make sense to do this extra step of turning the page into a
> >>> proc at all?
> >>> - does it make sense to overload the response caching config options for 
> >>> both?
> >>>
> >>> (and have I read the code right?)
> >>>
> >>> I guess my concern is that it's not obvious what's going on, both in
> >>> terms of configuration and code implementation, and that it's going to
> >>> hurt in the future when we want to add response caching to more parts
> >>> of the code.
> >>>
> >>> I'm also wondering why two different strategies are being used for ADP
> >>> and Tcl pages which are essentially identical. The script blocks for
> >>> an ADP are cached per-interp which allows the byte-code to persist.
> >>> The Tcl pages are turned into procs (but only optionally).
> >>>
> >>> ADP pages have a new 'singlescript' option which combines the text and
> >>> script blocks into a single script block. The intent was to allow code
> >>> to span <% .. %> boundaries, and a side effect is that a single error
> >>> aborts the whole page. But the interesting things is that now it's
> >>> basically a single chunk of Tcl to execute, like a Tcl page. Yet
> >>> they're handled differently...
> >>>
> >>> Also, the constructed procs aren't garbage collected (same problem as
> >>> the old Tcl page code)...
> >>>
> >>> -------------------------------------------------------------------------
> >>> This SF.net email is sponsored by DB2 Express
> >>> Download DB2 Express C - the FREE version of DB2 express and take
> >>> control of your XML. No limits. Just data. Click to get it now.
> >>> http://sourceforge.net/powerbar/db2/
> >>> _______________________________________________
> >>> naviserver-devel mailing list
> >>> naviserver-devel@lists.sourceforge.net
> >>> https://lists.sourceforge.net/lists/listinfo/naviserver-devel
> >>>
> >>
> >> -------------------------------------------------------------------------
> >> This SF.net email is sponsored by DB2 Express
> >> Download DB2 Express C - the FREE version of DB2 express and take
> >> control of your XML. No limits. Just data. Click to get it now.
> >> http://sourceforge.net/powerbar/db2/
> >> _______________________________________________
> >> naviserver-devel mailing list
> >> naviserver-devel@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/naviserver-devel
> >>
> >
> > -------------------------------------------------------------------------
> > This SF.net email is sponsored by DB2 Express
> > Download DB2 Express C - the FREE version of DB2 express and take
> > control of your XML. No limits. Just data. Click to get it now.
> > http://sourceforge.net/powerbar/db2/
> > _______________________________________________
> > naviserver-devel mailing list
> > naviserver-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/naviserver-devel
> >
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> naviserver-devel mailing list
> naviserver-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/naviserver-devel
>

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
naviserver-devel mailing list
naviserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/naviserver-devel

Reply via email to