You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Martin Makundi (JIRA)" <ji...@apache.org> on 2008/11/02 08:17:44 UTC

[jira] Updated: (WICKET-1910) ServletWebRequest.isAjax Should be cached

     [ https://issues.apache.org/jira/browse/WICKET-1910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Makundi updated WICKET-1910:
-----------------------------------

    Attachment: profile.png

The profiler shows that for a (large) page, 40% of the effort (20 seconds per such particular page) goes into just parsing the tags and does not seem to process any logic. 

So, some streamlining might be in order there. Even after this particular improvement.

> ServletWebRequest.isAjax Should be cached
> -----------------------------------------
>
>                 Key: WICKET-1910
>                 URL: https://issues.apache.org/jira/browse/WICKET-1910
>             Project: Wicket
>          Issue Type: Improvement
>          Components: wicket
>    Affects Versions: 1.4-M3
>         Environment: Any
>            Reporter: Martin Makundi
>            Priority: Minor
>         Attachments: profile.png
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> I was profiling my Wicket application and noticed that Jetty's
> getHeader method was hit quite often.
> It turns out the ServletWebRequest.isAjax method is hit quite often by
> each of the page elements (I am generating a large HTML report page).
> Since the Servlet container may not have optimal design for processing
> the getHeader method, I wonder if the ServletWebRequest.isAjax -method
> could/should be cached within wicket.
> I made the following modification to the ServletWebRequest.isAjax
> method, and measured a notable increase in performance:
>  public boolean isAjax() {
>    if (ajax == null) {
>      ajax = false;
>      String ajaxHeader = httpServletRequest.getHeader("Wicket-Ajax");
>      if (Strings.isEmpty(ajaxHeader) == false)
>      {
>        try
>        {
>          ajax = Strings.isTrue(ajaxHeader);
>        }
>        catch (StringValueConversionException e)
>        {
>          // We are not interested in this exception but we log it anyway
>          log.debug("Couldn't convert the Wicket-Ajax header: " + ajaxHeader);
>        }
>      }
>    }
>    return ajax;
>  }
> However, my question remains: is this a valid optimization or does it
> break the Wicket framework? Should it somehow be incorporated in the
> next releases?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.