Author: taylor
Date: Mon Nov 27 11:59:05 2006
New Revision: 479742
URL: http://svn.apache.org/viewvc?view=rev&rev=479742
Log:
cache resources to cut down on amount of dojo downloads per page
cache expiration configured in web.xml
this was written by Steve Milek, I just reviewed it and am checking it in now
Added:
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/engine/servlet/StaticResourceCachingFilter.java
Modified:
portals/jetspeed-2/trunk/src/webapp/WEB-INF/web.xml
Added:
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/engine/servlet/StaticResourceCachingFilter.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/engine/servlet/StaticResourceCachingFilter.java?view=auto&rev=479742
==============================================================================
---
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/engine/servlet/StaticResourceCachingFilter.java
(added)
+++
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/engine/servlet/StaticResourceCachingFilter.java
Mon Nov 27 11:59:05 2006
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2000-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.engine.servlet;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class StaticResourceCachingFilter implements Filter
+{
+ // constants
+
+ private static final String HTTP_HEADER_EXPIRES = "Expires" ;
+ private static final String HTTP_HEADER_CACHE_CONTROL = "Cache-Control" ;
+ private static final String HTTP_HEADER_CACHE_MAX_AGE = "max-age" ;
+ private static final String HTTP_HEADER_CACHE_MAX_AGE_EQ = "max-age=" ;
+
+ private static String PARAM_EXPIRES_HOURS = "ExpireHours";
+
+ private static final TimeZone GMT_TIME_ZONE = TimeZone.getTimeZone( "GMT"
);
+
+
+ // members
+
+ private double expires_in_hours = 0.0;
+ private int max_age = 0;
+
+ // constructor
+
+ public StaticResourceCachingFilter()
+ {
+ super() ;
+ }
+
+
+ // protocol
+
+ public void init( FilterConfig config )
+ {
+ try
+ {
+ expires_in_hours = Double.parseDouble( config.getInitParameter(
PARAM_EXPIRES_HOURS ) );
+ }
+ catch ( NumberFormatException ex )
+ {
+ expires_in_hours = 0;
+ }
+ max_age = (int)(expires_in_hours * 60);
+ }
+
+ public void doFilter( ServletRequest aRequest, ServletResponse aResponse,
FilterChain chain )
+ throws java.io.IOException, ServletException
+ {
+ HttpServletRequest request = (HttpServletRequest)aRequest;
+ HttpServletResponse response = (HttpServletResponse)aResponse;
+ if ( max_age > 0 )
+ {
+ String cacheControlVal = HTTP_HEADER_CACHE_MAX_AGE_EQ + max_age;
+ response.setHeader( HTTP_HEADER_CACHE_CONTROL, cacheControlVal );
+ }
+ chain.doFilter( request, response );
+ }
+
+ public void destroy()
+ {
+ }
+
+
+ /* unused (we're only doing Cache-Control max-age), but works for
generating Expires header */
+ private String createExpiresHeader( int expiresInHours )
+ {
+ SimpleDateFormat sdf = new SimpleDateFormat( "EEE, dd MMM yyyy
HH:mm:ss zzz", Locale.US );
+ sdf.setTimeZone( GMT_TIME_ZONE );
+ Calendar cal = Calendar.getInstance();
+ cal.add( Calendar.HOUR, expiresInHours );
+ long millis = cal.getTimeInMillis();
+ Date d = new Date( millis );
+ return sdf.format( d );
+ }
+}
Modified: portals/jetspeed-2/trunk/src/webapp/WEB-INF/web.xml
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/src/webapp/WEB-INF/web.xml?view=diff&rev=479742&r1=479741&r2=479742
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/WEB-INF/web.xml (original)
+++ portals/jetspeed-2/trunk/src/webapp/WEB-INF/web.xml Mon Nov 27 11:59:05 2006
@@ -35,6 +35,20 @@
<filter-name>AJAXFilter</filter-name>
<filter-class>org.apache.jetspeed.ajax.AJAXFilter</filter-class>
</filter>
+
+ <filter>
+ <filter-name>staticResourceCachingFilter</filter-name>
+
<filter-class>org.apache.jetspeed.engine.servlet.StaticResourceCachingFilter</filter-class>
+ <init-param>
+ <param-name>ExpireHours</param-name>
+ <param-value>48</param-value>
+ </init-param>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>staticResourceCachingFilter</filter-name>
+ <servlet-name>default</servlet-name>
+ </filter-mapping>
<!--
<filter>
<filter-name>PortalFilter</filter-name>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]