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


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.

Reply via email to