[
https://issues.jboss.org/browse/RF-11992?page=com.atlassian.jira.plugin.s...
]
Ivan Ravin commented on RF-11992:
---------------------------------
I'm not sure whether its possible to set right Pragma header in AS.
Lets look what happenes when client calls RF resource from server.
This is schematic stack of calls:
AS layer -> Portal layer -> portlet bridge -> richfaces
1. In secured context AS layer (or maybe Portal layer) put default non-cache headers in
real resonse. It include Pragma no-cache;
2. Bridge recognises RF request and transfers it to richfaces. It doesnt translate real
response headers, but create own temporal headers map and put it in call stack;
3. RF recognises cacheable resourse and put cache headers (Expires, Cache-Control) in
provided map
(
https://github.com/richfaces/core/blob/develop/impl/src/main/java/org/ric...).
After this stack pops back;
4. Bridge copies headers from temporal map keys/values to real response. For cacheble
resource Pragma entry is absent in RF response, so it remains unchanged (no-cache) in real
response. Here is problem.
Is it possible to set right header in AS/portal layer? I think not. Only RF knows about
cacheability or resource. But RF doesnt have access to real response, so it cant clear
wrong header. Thats why I suggested to add empty string value to RF response - its only
way to overwrite Pragma header in real response.
Pehaps, its possible to clear Pragma header in bridge layer, but I think my solution is
more trivial.
One more solution - overwrite AS code and put headers to real response after all
interceptors, but I think it will not be so trivial too.
cache bug in portlet
--------------------
Key: RF-11992
URL:
https://issues.jboss.org/browse/RF-11992
Project: RichFaces
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: core
Affects Versions: 3.3.3.Final, 4.2.0.CR1
Environment: jboss portal 2.7.2; Gatein portal
Reporter: Ivan Ravin
Priority: Minor
Labels: waiting_on_user
On Jboss and Gatein portal richfaces cant be cached when user is logged in.
Bug is found for richfaces 3.3.3 but i think can be reproduced for 4.x because
org.richfaces.resource.AbstractCacheableResource has similar code.
The steps for reproduce bug are:
download portlet bridge 2.2 archive
deploy richFacesPortlet.war from portlet bridge archive (i used jboss portal 2.7.2
bundle and GateIn-3.1.0-FINAL-jbossas)
look at network activity (i did with firefox + firebug, the same result on any other
browser). Just open page with richfaces portlet.
When user is not logged in, all richfaces resources are caching well, and this is headers
returned by server:
|Cache-Control |max-age=86400|
|Content-Type |text/javascript|
|Date |Thu, 26 Jan 2012 17:57:39 GMT|
|Expires |27 Jan 2012 17:57:39 GMT|
|Last-Modified |26 Jan 2012 17:42:17 GMT|
|Server |Apache-Coyote/1.1|
|X-Powered-By |Servlet 2.4; JBoss-4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA
date=200807181417)/JBossWeb-2.0|
But when user is logged in all richfaces stuff come from network every time (more than
1.3 mb).
This is headers returned by portal 2.7.2 when user logged in:
|Cache-Control |{color:red}no-cache,{color} max-age=86400|
|Content-Type |text/javascript|
|Date |Thu, 26 Jan 2012 18:26:49 GMT|
|Expires |{color:red}Thu, 01 Jan 1970 03:00:00 MSK,{color} 27 Jan 2012 18:26:49 GMT|
|Last-Modified |26 Jan 2012 18:05:56 GMT|
|{color:red}Pragma{color} |{color:red}No-cache{color}|
|Server |Apache-Coyote/1.1|
|Transfer-Encoding |chunked|
|X-Powered-By |Servlet 2.4; JBoss-4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA
date=200807181417)/JBossWeb-2.0|
The same problem with GateIn-3.1.0-FINAL-jbossas bundle, but now only one wrong header:
|Cache-Control |max-age=86400|
|Content-Type |text/javascript;charset=UTF-8|
|Date |Sat, 28 Jan 2012 08:54:14 GMT|
|Expires |29 Jan 2012 08:54:14 GMT|
|Last-Modified |28 Jan 2012 08:51:11 GMT|
|{color:red}Pragma{color} |{color:red}No-cache{color}|
|Server |Apache-Coyote/1.1|
|Transfer-Encoding |chunked|
|X-Powered-By |Servlet 2.5; JBoss-5.0/JBossWeb-2.1|
This header (Pragma) appears only when user is logged in, and again, all richfaces
resources come through network.
I did some debug and found that richfaces create good headers, but there is some code in
portal which put wrong values into real response before richfaces. I cant find this code
in portal sources, so maybe it is JBoss AS problem, or third party component.
In Gatein portal problem was partially resolved: it overwrites 2 wrong headers with
values provided by richfaces, but "pragma" header is absent in richfaces
response, and this way in secured portlets richfaces generate too much unnesessary
traffic.
To solve problem for GateIn there is enough to provide empty Pragma header; To solve
problem for JBoss Portal its required to fix resource headers processing in portal code,
like it done in gatein.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira