You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@clerezza.apache.org by Reto Bachmann-Gmuer <re...@apache.org> on 2010/07/04 22:30:48 UTC
Client Side Caching
Hello
With this pathc by default clients are allowed to cache responses generated
from PathNodeS. During development and changed of static resources you may
either:
- press shift-reload to force reloading
- set a Cache-Control header withing the jax-rs resource returning the
PathNode (e.g. set Max-Age=0 if the resource is a file-uri)
- disable caching by configuring the component
org.apache.clerezza.web.fileserver.PathNodeWriter setting Max-Age to 0
note that with the latter two approach you might still need to press
shift-reload once for resources that have previously been cached.
Cheers,
reto
On Sun, Jul 4, 2010 at 8:56 PM, <re...@apache.org> wrote:
> Author: reto
> Date: Sun Jul 4 18:56:03 2010
> New Revision: 960384
>
> URL: http://svn.apache.org/viewvc?rev=960384&view=rev
> Log:
> CLEREZZA-255: adding cache-control if not there yet
>
> Modified:
>
> incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.web.fileserver/src/main/java/org/apache/clerezza/web/fileserver/PathNodeWriter.java
>
> Modified:
> incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.web.fileserver/src/main/java/org/apache/clerezza/web/fileserver/PathNodeWriter.java
> URL:
> http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.web.fileserver/src/main/java/org/apache/clerezza/web/fileserver/PathNodeWriter.java?rev=960384&r1=960383&r2=960384&view=diff
>
> ==============================================================================
> ---
> incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.web.fileserver/src/main/java/org/apache/clerezza/web/fileserver/PathNodeWriter.java
> (original)
> +++
> incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.web.fileserver/src/main/java/org/apache/clerezza/web/fileserver/PathNodeWriter.java
> Sun Jul 4 18:56:03 2010
> @@ -32,19 +32,33 @@ import javax.ws.rs.ext.Provider;
> import org.slf4j.Logger;
> import org.slf4j.LoggerFactory;
> import org.apache.clerezza.web.fileserver.util.MediaTypeGuesser;
> +import org.apache.felix.scr.annotations.Component;
> +import org.apache.felix.scr.annotations.Property;
> +import org.apache.felix.scr.annotations.Service;
> +import org.osgi.service.component.ComponentContext;
> import org.wymiwyg.commons.util.dirbrowser.PathNode;
>
> /**
> *
> * @author reto
> - *
> - * @scr.component
> - * @scr.service interface="java.lang.Object"
> - * @scr.property name="javax.ws.rs" type="Boolean" value="true"
> */
> +@Component
> +@Service(value = Object.class)
> +@Property(name = "javax.ws.rs", boolValue = true)
> @Provider
> public class PathNodeWriter implements MessageBodyWriter<PathNode> {
> +
> + @Property(value="600", description="Specifies the value of the
> max-age field"
> + + "set in the cache-control header, as per RFC 2616 this is
> a number of "
> + + "seconds")
> + public static final String MAX_AGE = "max-age";
> +
> private final Logger logger =
> LoggerFactory.getLogger(PathNodeWriter.class);
> + private String cacheControlHeaderValue = "max-age:";
> +
> + protected void activate(ComponentContext context) {
> + cacheControlHeaderValue = "max-age="+(String)
> context.getProperties().get(MAX_AGE);
> + }
>
> @Override
> public boolean isWriteable(Class<?> type, Type genericType,
> Annotation[] annotations, MediaType mediaType) {
> @@ -70,6 +84,11 @@ public class PathNodeWriter implements M
> logger.debug("Set media-type to: {}",
> guessedMediaType);
> }
> }
> + if (!httpHeaders.containsKey(HttpHeaders.CACHE_CONTROL)) {
> + httpHeaders.putSingle(HttpHeaders.CACHE_CONTROL,
> cacheControlHeaderValue);
> + } else {
> + logger.debug("httpHeaders already contain
> CACHE_CONTROL");
> + }
> InputStream in = t.getInputStream();
> for (int ch = in.read(); ch != -1; ch = in.read()) {
> entityStream.write(ch);
>
>
>