= DRAFT: Invalidating Page Snippets =
The [[Foundations/Memcached|current TALES support for memcached]] does not support invalidation when the data changes, relying on timed expiration instead. Invalidation would be preferable for users, particularly when users want to see the results of their own work (see Bug:593054). Invalidations from scripts and other work done outside of the application are not as important for this case.
'''As a ''' Launchpad User<
>
'''I want ''' fast-rendering Launchpad pages that immediately reflect my actions<
>
'''so that ''' I'm not confused by some parts of Launchpad seeming to not be affected by changes I have made.<
>
Invalidations are tricky, as we expected and then explored in the webservice work.
== Rationale ==
Cached page snippets have proved to give us benefit, thanks to our current TALES implementation. However, even before we have significantly deployed them, we are getting bugs about user confusion.
Moreover, the current design does not clearly enforce a page structure that encourages safe cacheing. This is an advantage for testing and easy deployment, but often getting good cacheing characteristics will involve refactoring the page anyway.
== Stakeholders ==
Launchpad users.
== Constraints ==
''What MUST the new behaviour provide?''
''What MUST it not do?''
== Unnecessary Desires ==
''What are ideas that might be desirable, but are *not* constraints for this proposal?''
== Success ==
''How will we know when we are done?''
''How will we measure how well we have done?''
== Subfeatures ==
'''''OPTIONAL'''''
''Other LaunchpadEnhancementProposal``s that form a part of this one.''
== Implementation Proposal ==
=== Description ===
''How will this work?''
=== Workflows ===
'''''OPTIONAL'''''
''What are the workflows for this feature?''
''Provide mockups for each workflow.''
'''''You do not have to get the mockups and workflows right at this point. In fact, it is better to have several alternatives, delaying deciding on the final set of workflows until the last responsible moment.'''''
=== Risks ===
''What are the risks associated with this implementation? Consider risks that may make the implementation fail to meet its goals, risks that may make the delivery time slip, security risks, performance risks, and usability/documentation risks.''
=== Experiment 1 ===
''It will often be appropriate to construct one or more experiments to address the identified risks before proceeding to the implementation step. Make sure that the effort to construct experiments is significantly less than the effort expected to be expended on the implementation!''
==== Goal ====
''What is the goal of the experiment? What risk or risks do you intend to explore?''
==== Design ====
''How will the experiment work?''
==== Result ====
''How did it turn out?''
== Thoughts? ==
''Put everything else here.''