On Wed, 14 Jul 2004 01:14:35 -0400, pete-tbnl-dev@kazmier.com wrote:
Just to make sure I understand what you are saying:
- If the user does not assign a handler to the special variable,
then TBNL should not make any assumptions on the intention of the coder and thus not send any Last-Modified header and never send a 304 reply in response to a client's If-Modified-Since header.
Yes. The default value should be a function which always returns NIL.
- If the user does assign a handler and it returns a non-nil value,
then TBNL should use this universal-time as the value of the Last-Modified header or the value to compare to a client's If-Modified-Since header.
- If the user does assign a handler and it returns a nil value, then
TBNL should not send any Last-Modified header and never send a 304 reply in response to a client's If-Modified-Since header because the coder has indicated that the last modified time is not known for this request.
Yes and yes.
I'd be happy to send a patch. I probably won't get to this right away as I'm busy trying to get other parts of my new site working and just trying to learn lisp in general. However, at some point I'll probably need the functionality at which point I'll submit a patch.
That's fine. No need to hurry.
I've built sites that use template engines that are backed by a "data miner" that refreshes the context used to fill templates on a periodic basis. Web-based reporting interfaces can take advantage of this scenario.
But why then don't you serve these pages statically directly from Apache?
Cheers, Edi.
On Wed, Jul 14, 2004 at 10:11:50AM +0200, Edi Weitz wrote:
I've built sites that use template engines that are backed by a "data miner" that refreshes the context used to fill templates on a periodic basis. Web-based reporting interfaces can take advantage of this scenario.
But why then don't you serve these pages statically directly from Apache?
In this specific example, the data model can be modified by other external events as well. Furthermore, there are numerous templates that provide visibility into the data model and each is customized to the user. I.e., the template contains the username, last login, etc. It isn't practical to store 'n' copies of output.
In addition, each page includes a Refresh header (for 5 minutes) as these reports are meant to be used by level 1 and level 2 support teams that leave them open indefinitely. Thus, when a change occurs to the data model, we can simply use getLastModified to invalidate all of the pages stored in cache on the client side.