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

Allow to use custom anticache parameter value for Image component

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    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

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          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:

              Slack

                Issue deployment