I've made a class, extending the DefaultPageManagerProvider to avoid Wicket page store (in order recreate every page at every request from users)
I'm testing it, and found no problems - for now. Take a look; I'm thinking about sending it to JIRA as an improvement /** * User: obesga * Date: 16-jan-2013 * Page manager that does not store any page, nor any bit */ public class VoidPageManagerProvider extends DefaultPageManagerProvider { // Common properties private IPageManagerContext iPageManagerContext; private IPageManager iPageManager; private IDataStore iDataStore; private IPageStore iPageStore; /** * Basic construftor * @param application Actual application */ public VoidPageManagerProvider(Application application) { super(application); iPageManagerContext = new DefaultPageManagerContext(); iDataStore = new VoidIDataStore(); iPageStore = new VoidIPageStore(); iPageManager = new VoidPageStoreManager(application.getName(),iPageStore,iPageManagerContext); } @Override public IPageManager get(IPageManagerContext pageManagerContext) { return iPageManager; } @Override protected IPageStore newPageStore(IDataStore dataStore) { return iPageStore; } @Override protected IDataStore newDataStore() { return iDataStore; } /** * A data store that doesn't store a byte */ private class VoidIDataStore implements IDataStore { public byte[] getData(String s, int i) { return null; } public void removeData(String s, int i) { } public void removeData(String s) { } public void storeData(String s, int i, byte[] bytes) { } public void destroy() { } public boolean isReplicated() { return true; } public boolean canBeAsynchronous() { return true; } } /** * A page store that doesn't store a page */ private class VoidIPageStore implements IPageStore { public void destroy() { } public IManageablePage getPage(String s, int i) { return null; } public void removePage(String s, int i) { } public void storePage(String s, IManageablePage iManageablePage) { } public void unbind(String s) { } public Serializable prepareForSerialization(String s, Object o) { return null; } public Object restoreAfterSerialization(Serializable serializable) { return null; } public IManageablePage convertToPage(Object o) { return null; } } /** * The basic store manager, extended to not support versioning */ private class VoidPageStoreManager extends PageStoreManager implements IPageManager { public VoidPageStoreManager(String applicationName, IPageStore pageStore, IPageManagerContext context) { super(applicationName, pageStore, context); } @Override public boolean supportsVersioning() { return false; } } } > > > Oscar Besga Arcauz < < < -----Martin Grigorov <mgrigo...@apache.org> escribió: ----- Para: users@wicket.apache.org De: Martin Grigorov <mgrigo...@apache.org> Fecha: 16/01/2013 09:00 Asunto: Re: Do not cache pages, nor in application, nor in browser Hi, On Tue, Jan 15, 2013 at 7:59 PM, Oscar Besga Arcauz <obe...@isdefe.es>wrote: > > > I use these code in order to avoid web page cache, in browser and in > wicket application; > also I want to avoid disk caching and serialization > > I'm using Wicket6 > > > ¿ Do you see this code correct ? ¿ Is there any easier way to accomplish > this ? > > /** > * App > */ > public class MyApplication extends WebApplication { > @Override > public void init() { > super.init(); > setPageManagerProvider(new MyPageManagerProvider(this)); > } > > /** > * shall not save > */ > private class MyPageManagerProvider extends DefaultPageManagerProvider > { > > private MyPageManagerProvider(Application application) { > super(application); > } > > > @Override > protected IDataStore newDataStore() { > // guardamos tod o en memoria > return new HttpSessionDataStore(new > DefaultPageManagerContext(), new PageNumberEvictionStrategy(0)); > You can use getStoreSettings#setMaxSizePerSession(Bytes.bytes(1)) with the default DiskDataStore too. But your approach is better because this way you don't do IO operations. > } > > } > > } > > > > /******************************************************************************************/ > > /** > * Web Page > */ > public class MyPage extends WebPage { > > @Override > protected void setHeaders(WebResponse response) { > super.setHeaders(response); > response.setHeader("X-Frame-Options","deny"); // Avoid IFRFAMES > response.setHeader("Cache-Control", > "no-cache,no-store,private,must-revalidate,max-stale=0,post-check=0,pre-check=0"); > response.setHeader("Expires","0"); > response.setHeader("Pragma", "no-cache"); > response.disableCaching(); > You probably want to call #disableCaching() *before* your setHeader() calls. Currently #disableCaching() overrides some of them. > } > > } > > > > > > > > Oscar Besga Arcauz < < < > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > > -- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com <http://jweekend.com/> --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org