Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-6206

Allow to use custom anticache parameter value for Image component

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 7.3.0, 6.23.0
    • 8.0.0-M2, 6.25.0, 7.5.0
    • wicket
    • None

    Description

      When rendering a single page with multiple references to the same image resource (for instance a repeated icon in a table), each of these images gets a different antiCache query parameter. Thus the browser rendering this single page will perform a download for each occurrence of this image in the page, not using its cache even in the scope of this single page rendering.

      I understand the need of preventing cache, but it may be a bit extreme to prevent caching in the scope of a single page rendering.

      The reason for this extreme behavior is that Image's anticache feature is implemented as follows (Wicket 7.3):

      	protected final void addAntiCacheParameter(final ComponentTag tag)
      	{
      		String url = tag.getAttributes().getString("src");
      		url = url + (url.contains("?") ? "&" : "?");
      		url = url + "antiCache=" + System.currentTimeMillis();
      
      		tag.put("src", url);
      	}
      

      As each Image's rendering may be done at a different time (a millisecond later), the antiCache parameter may be different for each Image.

      Replacing System.currentTimeMillis() by RequestCycle.get().getStartTime() should probably solve the problem... ?
      If impossible, maybe we could just remove the final keyword on addAntiCacheParameter so that extending classes may override it?

      Attachments

        Issue Links

          Activity

            People

              mgrigorov Martin Tzvetanov Grigorov
              yrodiere Yoann Rodière
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: