From 5166e952c1664eeca0f0958085f08062314ccf4c Mon Sep 17 00:00:00 2001 From: Athou Date: Wed, 3 Apr 2013 16:24:11 +0200 Subject: [PATCH] cache favicons --- .../com/commafeed/backend/StartupBean.java | 9 +++++++- .../commafeed/frontend/pages/FaviconPage.java | 22 ++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/commafeed/backend/StartupBean.java b/src/main/java/com/commafeed/backend/StartupBean.java index f120de2d..f02253e2 100644 --- a/src/main/java/com/commafeed/backend/StartupBean.java +++ b/src/main/java/com/commafeed/backend/StartupBean.java @@ -1,6 +1,7 @@ package com.commafeed.backend; import java.util.Arrays; +import java.util.Calendar; import javax.annotation.PostConstruct; import javax.ejb.Singleton; @@ -43,9 +44,11 @@ public class StartupBean { @Inject PasswordEncryptionService encryptionService; + private long startupTime; + @PostConstruct private void init() { - + startupTime = Calendar.getInstance().getTimeInMillis(); if (userService.getCount() == 0) { log.info("Populating database with default values"); @@ -104,4 +107,8 @@ public class StartupBean { } + public long getStartupTime() { + return startupTime; + } + } diff --git a/src/main/java/com/commafeed/frontend/pages/FaviconPage.java b/src/main/java/com/commafeed/frontend/pages/FaviconPage.java index 147c584a..2d0dc7b3 100644 --- a/src/main/java/com/commafeed/frontend/pages/FaviconPage.java +++ b/src/main/java/com/commafeed/frontend/pages/FaviconPage.java @@ -3,20 +3,27 @@ package com.commafeed.frontend.pages; import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; +import java.util.Date; +import java.util.concurrent.TimeUnit; import javax.inject.Inject; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; +import org.apache.http.impl.cookie.DateUtils; import org.apache.wicket.request.IRequestCycle; import org.apache.wicket.request.IRequestHandler; +import org.apache.wicket.request.http.WebResponse; import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.util.time.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.commafeed.backend.HttpGetter; +import com.commafeed.backend.StartupBean; import com.commafeed.backend.model.UserRole.Role; import com.commafeed.frontend.SecurityCheck; +import com.google.common.net.HttpHeaders; @SuppressWarnings("serial") @SecurityCheck(Role.USER) @@ -28,6 +35,9 @@ public class FaviconPage extends BasePage { @Inject HttpGetter getter; + @Inject + StartupBean starupBean; + public FaviconPage(PageParameters params) { final String url = params.get("url").toString(); getRequestCycle().scheduleRequestHandlerAfterCurrent( @@ -35,7 +45,17 @@ public class FaviconPage extends BasePage { @Override public void respond(IRequestCycle requestCycle) { - requestCycle.getResponse().write(getImage(url)); + WebResponse response = (WebResponse) requestCycle + .getResponse(); + response.setLastModifiedTime(Time.millis(starupBean + .getStartupTime())); + + long expiresAfter = TimeUnit.DAYS.toMillis(7); + response.setHeader( + HttpHeaders.EXPIRES, + DateUtils.formatDate(new Date(starupBean + .getStartupTime() + expiresAfter))); + response.write(getImage(url)); } @Override