Usually IFrame isn't a good idea, I think it's because of the
accessibility and search engines. At least that is what the major part
of the HTML coders talk about it. But I can't think in another way to
do it. just my 5c

On Thu, Apr 9, 2009 at 1:29 PM, Jim Pinkham <pinkh...@gmail.com> wrote:
> A quick follow up in case anyone else was curious about how this is going:
>
> I ended up using ehcache page cache filter for a simple page that just
> displays 'current' items (calendar view of events) based on a db query.  No
> forms (state) on this page so it works pretty well.  In my DAO that does
> updates, I clear the cache.  Very simple, works great.  (Only catch I ran
> into is that my menus change when I have a session and I'm logged in as
> super-user, so I have to make sure I don't let that version of the page be
> cached - I do that by adding 'super' page parameter so URL is different
> and filter is set to only cache the 'normal' version.
>
> So, that still leaves me with my main catalog page, which is primarily a
> similar list of items, but it also has some active content (in particular, a
> search form).
>
> So my bright idea (tm)  (i.e. I'd love to hear critiques before I get too
> far along with it) is the following:
>
> Make a new page for just the data grid, with page parameters including the
> search string and last-modified date (and super-user login because I get
> some edit links and such with that).  Mount it and ehcache it, and override
> setHeader so it becomes client cache-able.   Then, my outer catalog page
> with the search form on it just uses an IFrame to display the grid data
> (easy to keep track of last-modified globally).  Same clear method in DAO
> dumps the cache whenever a change is made.
>
> Also, I'd want to make a robot no-follow thing to avoid google trap on that
> page.  Could this actually be a legitimate use of otherwise dodgy IFRAME ?
>
> Sound like a good plan?
>
> Thanks,
> -- Jim.
>
> On Fri, Mar 27, 2009 at 1:56 PM, Jim Pinkham <pinkh...@gmail.com> wrote:
>
>> Jeremy,
>>
>> Thanks for your thoughtful reply - Scenario is exactly right.
>> I played around with page headers to make the whole page cacheable, but ran
>> into several problems - I have a search form, and there's an 'admin' login
>> that enables edit links.  So it's really a stateful page, but I want to
>> speed up the most common state.
>>
>> The bulk of the content is from an AjaxFallbackDefaultDataTable with
>> sortable columns. I re-sorted a column with the Ajax Debug window open to
>> measure it's data size - about 225000 chars.  My database search takes
>> 64ms.  Overall client repaint time is about 2 sec with browser on
>> localhost.  I haven't found the right hook to measure total wicket response
>> time yet, but it appears pretty quick - so that's why I thougth it made
>> sense to focus on client caching.
>>
>> Before I give up entirely on this idea, I'm wondering if it might make
>> sense to make the grid a public Resource, which I'm hoping the browser would
>> treat like an image.  I can afford a separate db query to just get my
>> max(lastModified), which might let me save the time to generate HTML, which
>> looks as though it could be my bottleneck.  If this way is too hard, I'll
>> give up, but it sounds do-able - what do you think?
>> Thanks,
>> -- Jim.
>>
>>
>> On Thu, Mar 26, 2009 at 6:30 PM, Jeremy Thomerson <
>> jer...@wickettraining.com> wrote:
>>
>>> How is this going to help you?  Scenario as I understand it:
>>>
>>>
>>>   1. User requests homepage - pulls from site - with your etag in it
>>>   2. User requests homepage again - calls site - your server does all of
>>>   the loading of data - then you calculate / set etag
>>>   3. Browser now knows that it is the same as before and does not have to
>>>   pull the HTML down
>>>
>>> The user saves what is likely a very short time in the overall scheme of
>>> things - downloading the HTML.
>>> The user still has to sit through the process of you loading the data from
>>> the search / DB / etc. and generating HTML
>>> Your server saves no load - but a little bandwidth.
>>>
>>> I'd look at caching before it even gets to your server.  Otherwise your
>>> user
>>> will likely not see much benefit unless you are sending multiple MB of
>>> data
>>> back.  Sounds like premature optimization to me.
>>>
>>> --
>>> Jeremy Thomerson
>>> http://www.wickettraining.com
>>>
>>>
>>>
>>>  On Thu, Mar 26, 2009 at 5:26 PM, Jim Pinkham <pinkh...@gmail.com> wrote:
>>>
>>> > Thanks Jerry; I think that applies only to static pages.
>>> >
>>> > My next idea is to try overridding WebPage.setHeaders and just set the
>>> >
>>> > response.setHeader("Cache-Control", "max-age=3600, must-revalidate");
>>> >
>>> > response.setHeader("ETag", "1");  // I'll use a checksum on the data
>>> coming
>>> > back from my search (Even better would be a checksum on the rendered
>>> page
>>> > data - any idea how to do that?)
>>> > Initial test (above) seems promising...
>>> >
>>> > Thanks,
>>> > -- Jim.
>>> >
>>> > On Thu, Mar 26, 2009 at 3:22 PM, Jeremy Thomerson <
>>> > jer...@wickettraining.com
>>> > > wrote:
>>> >
>>> > > Have you looked at a standard HTTP caching proxy like
>>> > > http://www.squid-cache.org/ ?
>>> > >
>>> > >
>>> > > --
>>> > > Jeremy Thomerson
>>> > > http://www.wickettraining.com
>>> > >
>>> > >
>>> > >
>>> > > On Thu, Mar 26, 2009 at 2:02 PM, Jim Pinkham <pinkh...@gmail.com>
>>> wrote:
>>> > >
>>> > > > Changing my search query to this got some better hits:
>>> > > > http://lmgtfy.com/?q=cacheability
>>> > > > So, allow me to refine my question based on that - has anyone tried
>>> > some
>>> > > of
>>> > > > these approaches (see first result from above) to generrate and dump
>>> > > > content
>>> > > > to a static file (renamed if it chages) and having the wicket home
>>> page
>>> > > be
>>> > > > a
>>> > > > redirect to that file, or something like that?
>>> > > >
>>> > > > Thanks,
>>> > > > -- Jim.
>>> > > > On Thu, Mar 26, 2009 at 12:53 PM, Jim Pinkham <pinkh...@gmail.com>
>>> > > wrote:
>>> > > >
>>> > > > > I've found a few posts about how to mark dynamic pages so they
>>> won't
>>> > be
>>> > > > > cached.
>>> > > > >
>>> > > > > I've got a different situation that I think is fairly common - the
>>> > > 'home'
>>> > > > > page of my app is effectively a (cheesr-like) catalog of items
>>> that
>>> > > > changes
>>> > > > > infrequently.   Users didn't like paging, so it's about 300 items
>>> in
>>> > a
>>> > > > > simple scrollable page.  Once a user views it, they often drill
>>> down
>>> > > into
>>> > > > an
>>> > > > > item, then use the back button (or sometimes the Home link) to
>>> > > re-display
>>> > > > > it.
>>> > > > >
>>> > > > > The db query is actually pretty fast; I think the bottleneck seems
>>> to
>>> > > be
>>> > > > > fetching the HTML.
>>> > > > >
>>> > > > > My question is, can I use some kind of header caching hint with a
>>> > > version
>>> > > > > number so that once the content is identified as being the same as
>>> a
>>> > > > > previously fetched page, the user's browser will repaint it from a
>>> > > local
>>> > > > > cache?  (I know this is typically done with images, but I was
>>> > wondering
>>> > > > if
>>> > > > > this would make sense to do also do with content that technically
>>> > > > 'dynamic'
>>> > > > > but actually is 'fairly static' ?   (I say version number rather
>>> than
>>> > > > time
>>> > > > > to expire so that in case I add/change an item I can increment the
>>> > > > catalog
>>> > > > > version)
>>> > > > >
>>> > > > > Thanks,
>>> > > > > -- Jim
>>> > > > >
>>> > > >
>>> > >
>>> >
>>>
>>
>>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to