As I understand it, getCacheKey() returning null results in no cache(at
all), this is what we did before and probably what I will revert back to.
But it's not really what I want: Ops complained about network traffic(no
cache means every request fetches one of the basepages) and we got our
drupal vendor to return the last-modified header, and keep it up-to-date,
but now it seems wicket cannot get the value of the last-modified header
because of the implementation in this Connections class.

I wrote a unit-test that does the same as Connections.getLastModified(final
URL url) and the lastmodified value is always 0 when doInput is set to
false.
So I think this cache system with the last-modified header cannot work for
'real' url's(remote markup)

unit-test:
  @Test
  public void testLastModified() throws IOException {
    URL url = new URL("http://www….”);
    URLConnection connection = url.openConnection();
//    connection.setDoInput(false);
    System.out.println(new DateTime(connection.getLastModified()));
  }

point this to any url that returns a last-modified header and
connection.getLastModified() returns this value.
With setDoInput set to false, the url can even be non-existent,
getLastModified returns 0.

Kind regards,

Stijn Niclaes


On Wed, Feb 18, 2015 at 8:35 AM, Martin Grigorov <[email protected]>
wrote:

> Hi,
>
> The field is set to false because Wicket doesn't write anything to the
> connection. It just reads from it.
>
> Reading the beginning of your message I thought that your base pages need
> to implement org.apache.wicket.markup.IMarkupCacheKeyProvider and override
> #getCacheKey() to return null. Try it!
>
>
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Tue, Feb 17, 2015 at 10:28 AM, Stijn Niclaes <[email protected]>
> wrote:
>
> > Hi all,
> >
> > We have 4 basePages for which the markup resides in a drupal
> site(created a
> > ResourceStreamLocator extension for that). All our other pages extend
> from
> > these.
> >
> > Now the problem is that these basePages get cached and the cache does not
> > get invalidated.
> > We get the up-to-date last-modified header from drupal but wicket seems
> to
> > simply ignore it.
> >
> > Issue lies in Connections class: the static method getLastModified(URL
> url)
> > creates a URLConnection, but then calls setDoInput(false) before calling
> > connection.getLastModified().
> > URLConnection.getLastModified always returns 0 when doInput is set to
> > false, no connection is even set up when doInput is false.
> >
> > Why is this doInput field set to false?
> >
> > We use Wicket 1.5.12.
> >
> > Kind regards,
> >
> > Stijn Niclaes
> >
>

Reply via email to