Hi

I have just built Struts 2.0.2 snapshot based on the latest svn code
(03 Dec 2006).
I can see huge improvement over the 2.0.1 code in tabbedPanel
handling, also the default css styles are much nicer.
But here are some questions about this:

1) Does it really need to download 500+ kB of javascript and related
code to display a set of empty tabs? Can it be compressed somehow? Any
switches for that?

2) Why does that javascript and related code get reloaded every time?
   I try to enter the page with tabs again (not forcing reload with SHIFT) and
   all that stuff is fetched again.
   Can it be something with http headers?
   The total amount of data that is sent is really frustrating me.

3) In addition to that I could observe 16 multiple requests for
      GET /myApp/struts/xhtml/styles.css HTTP/1.1
   to display single HTML page with 7 remote panels
   (test, all panels referring the same simple page with 1 test
sentence - nothing more).

4) It is not written anywhere in docs - but these tabs do not work if the S2
   application uses 'html' for action extension (overriding the default).
   Some of the resources returned by Struts for tabbedPanel also end
with 'html'
   and the struts controller sees a problem.
       GET /myApp/struts/dojo/src/widget/templates/TabContainer.html HTTP/1.1
   I can only see a stacktrace that such action is not defined in my app,
   dojo does not get such page and instead of tabs I can only see
error message
   in the browser.
   After I changed the extension for my actions to something else -
it started to work.
   But it took me 30 minutes to understand the problem.


About the browser-server conversation.
I could observe conversations like this (using LiveHttpHeaders):
The date on my system is: 4 gru 2006 00:09:33 GMT

BROWSER REQUEST:
--------------------
GET /myApp/struts/dojo/src/browser_debug.js HTTP/1.1
Host: myHost.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1)
Gecko/20061010 Firefox/2.0
Accept: */*
Accept-Language: pl,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: UTF-8,*
Keep-Alive: 300
Connection: keep-alive
Cookie: JSESSIONID=EAC57FC811A25266F50DE798A102A761;
__utma=220229530.66828090.1163407613.1163407613.1163410124.2;
__utmz=220229530.1163407613.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)
If-Modified-Since: Pn, 4 gru 2006 00:09:33 GMT
Cache-Control: max-age=0

Tomcat (5.5.20) RESPONSE
------------------------------
HTTP/1.x 200 OK
Server: Apache-Coyote/1.1
Date: Mon, 04 Dec 2006 07:55:53 GMT
Expires: Wt, 5 gru 2006 08:55:54 GMT
Retry-After: Wt, 5 gru 2006 08:55:54 GMT
Cache-Control: public
Last-Modified: Pn, 4 gru 2006 00:09:33 GMT
Content-Type: text/javascript
Content-Length: 4861

The browser nicely asks for the content using the 'If-Modified-Since' header,
but Struts simply ignores it and resends the full javascript code
instead of the 'Not Modified' status. On the other side Struts allows
for caching it for 24 hours.

Also, the 'Date' headers contains date printed with EN locale, while
other date related headers (Expires, Retry-After, Last-Modified) print
date with PL locale (default for my machine). I am not sure where
these differences come from.

Can a check for 'If-Modified-Since' be added to the servlet that
returns all the static code inside Struts2?
Maybe even there could be some switch in struts.properties to specify
the time between 'Date' and 'Expires' for static content?


The overall experience is very positive, just these little-big annoyances ...

Darek

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to