R. David Murray writes:
... Well, there's two aspects to this. The first one is the quesiton of *why* the last modified header is currently that of the outermost page template. That's a zope@zope.org question. The second is the question of whether or not that is the "right" behavior, and what it would take to make Zope smarter such that the last modified header would actually be accurate. Think about it. It is very difficult.
In order to determine the accurate modification time, you need to render the template (as it is non-trivial to determine the set of objects the rendering depends on without actually doing the rendering). Rendering may produce side effects. But "HEAD" requests are required by HTTP not to have side effects. Thus, you cannot have accurate modified headers for "HEAD" requests. Moreover, usually "HEAD" requests do not pass the necessary parameters for template rendering. To get it right for non-"HEAD" requests, you would need to pass an implicit state through most of the application. Any time, you access an object's attribute, you must take its last modification time into account, as the last modification may have changed the attribute you are accessing. I expect, it will give a significant performance penalty, at least, even when you come up with an ingenious implementation idea. Dieter