mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
cache favicons
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package com.commafeed.backend;
|
package com.commafeed.backend;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Calendar;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import javax.ejb.Singleton;
|
import javax.ejb.Singleton;
|
||||||
@@ -43,9 +44,11 @@ public class StartupBean {
|
|||||||
@Inject
|
@Inject
|
||||||
PasswordEncryptionService encryptionService;
|
PasswordEncryptionService encryptionService;
|
||||||
|
|
||||||
|
private long startupTime;
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
private void init() {
|
private void init() {
|
||||||
|
startupTime = Calendar.getInstance().getTimeInMillis();
|
||||||
if (userService.getCount() == 0) {
|
if (userService.getCount() == 0) {
|
||||||
log.info("Populating database with default values");
|
log.info("Populating database with default values");
|
||||||
|
|
||||||
@@ -104,4 +107,8 @@ public class StartupBean {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getStartupTime() {
|
||||||
|
return startupTime;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,20 +3,27 @@ package com.commafeed.frontend.pages;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.apache.http.impl.cookie.DateUtils;
|
||||||
import org.apache.wicket.request.IRequestCycle;
|
import org.apache.wicket.request.IRequestCycle;
|
||||||
import org.apache.wicket.request.IRequestHandler;
|
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.request.mapper.parameter.PageParameters;
|
||||||
|
import org.apache.wicket.util.time.Time;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.commafeed.backend.HttpGetter;
|
import com.commafeed.backend.HttpGetter;
|
||||||
|
import com.commafeed.backend.StartupBean;
|
||||||
import com.commafeed.backend.model.UserRole.Role;
|
import com.commafeed.backend.model.UserRole.Role;
|
||||||
import com.commafeed.frontend.SecurityCheck;
|
import com.commafeed.frontend.SecurityCheck;
|
||||||
|
import com.google.common.net.HttpHeaders;
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
@SecurityCheck(Role.USER)
|
@SecurityCheck(Role.USER)
|
||||||
@@ -28,6 +35,9 @@ public class FaviconPage extends BasePage {
|
|||||||
@Inject
|
@Inject
|
||||||
HttpGetter getter;
|
HttpGetter getter;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
StartupBean starupBean;
|
||||||
|
|
||||||
public FaviconPage(PageParameters params) {
|
public FaviconPage(PageParameters params) {
|
||||||
final String url = params.get("url").toString();
|
final String url = params.get("url").toString();
|
||||||
getRequestCycle().scheduleRequestHandlerAfterCurrent(
|
getRequestCycle().scheduleRequestHandlerAfterCurrent(
|
||||||
@@ -35,7 +45,17 @@ public class FaviconPage extends BasePage {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void respond(IRequestCycle requestCycle) {
|
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
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user