Skip to content

Commit

Permalink
Applied image headers customization to the new ViewFavicon servlet.
Browse files Browse the repository at this point in the history
  • Loading branch information
luccioman committed Oct 14, 2016
1 parent d16e57b commit a588ed7
Showing 1 changed file with 20 additions and 10 deletions.
30 changes: 20 additions & 10 deletions source/net/yacy/http/servlets/YaCyDefaultServlet.java
Expand Up @@ -930,16 +930,7 @@ protected void handleTemplate(String target, HttpServletRequest request, HttpSe
result = RasterPlotter.exportImage(bi, targetExt);
}

boolean staticImage = target.equals("/ViewImage.png");

if (staticImage) {
if (response.containsHeader(HeaderFramework.LAST_MODIFIED)) {
response.getHeaders(HeaderFramework.LAST_MODIFIED).clear(); // if this field is present, the reload-time is a 10% fraction of ttl and other caching headers do not work
}

// cache-control: allow shared caching (i.e. proxies) and set expires age for cache
response.setHeader(HeaderFramework.CACHE_CONTROL, "public, max-age=" + Integer.toString(600)); // seconds; ten minutes
}
updateRespHeadersForImages(target, response);
final String mimeType = Classification.ext2mime(targetExt, MimeTypes.Type.TEXT_HTML.asString());
response.setContentType(mimeType);
response.setContentLength(result.length());
Expand All @@ -951,6 +942,9 @@ protected void handleTemplate(String target, HttpServletRequest request, HttpSe
}

if (tmp instanceof InputStream) {
/* Images and favicons can also be written directly from an inputStream */
updateRespHeadersForImages(target, response);

writeInputStream(response, targetExt, (InputStream)tmp);
return;
}
Expand Down Expand Up @@ -1054,6 +1048,22 @@ protected void handleTemplate(String target, HttpServletRequest request, HttpSe
}
}

/**
* Eventually update response headers for image resources
* @param target the query target
* @param response servlet response to eventually update
*/
private void updateRespHeadersForImages(String target, HttpServletResponse response) {
if (target.equals("/ViewImage.png") || target.equals("/ViewFavicon.png")) {
if (response.containsHeader(HeaderFramework.LAST_MODIFIED)) {
response.getHeaders(HeaderFramework.LAST_MODIFIED).clear(); // if this field is present, the reload-time is a 10% fraction of ttl and other caching headers do not work
}

// cache-control: allow shared caching (i.e. proxies) and set expires age for cache
response.setHeader(HeaderFramework.CACHE_CONTROL, "public, max-age=" + Integer.toString(600)); // seconds; ten minutes
}
}


/**
* Write input stream content to response and close input stream.
Expand Down

0 comments on commit a588ed7

Please sign in to comment.