Frankly may be because i am doing hundreds things today i missed what 
needs to be changed. I am for changes:-))

ADP engine is what i've ported from AS 4.5.

Stephen Deasey wrote:
> 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
> 


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