I've been investigating and optimising performance of a search results page in our T5 app. The page needs to have a bookmarkable URL which will work without requiring any session information, so it can be used long after the session has expired. This necessitates putting the user's query in the URL which is then encoded and ends up as a very long string that becomes part of all results page URLs. If the session is present then it's ignored, and it's entirely optional - the page works fine with the query part of the URL removed, as long as the session is present and the query & results don't need re-generating.
The downside to this is that every URL for this page has this large query object encoded into it, which is not a problem for render URLs since that will end up in the browsers location bar and potentially get bookmarked by the users, so we want this optional large query object to be present. On the other hand, event URLs also have this large query object as part of them, even though it is completely unnecessary (if the user clicks on a link when the session has timed out they will get a session ended page) and is never used. This has been manageable while there were not many event links on the page, but over time they have increased and now event links on the results page are weighing in at over a megabyte! What I want to do is only return the optional large query object when passivating for render URLs and not for event link URLs, but I can't figure out a way of doing this without hacking at T5 internals or making a special case for generation of links to this page. (I'd rather not do either) So, am I missing something, is there a way of doing this in onPassivate() that anyone can think of? Does anyone else think that this is a feature worth having in Tapestry, so that external URLs can have extra bits that internal (event) URLs don't need? Thanks, Andy.