使用Java在Appengine上使用Blobstore提供图像时丢失缓存标头

时间:2014-03-13 20:22:02

标签: java google-app-engine http-headers blobstore

根据documentation,我应该能够在调用此[serve]方法之前或之后附加自定义标头。"

我像这样服务我的blobstore jpeg。

import com.google.appengine.api.blobstore.BlobstoreService;

class MyServlet extends javax.servlet.http.HttpServlet {
  @Override
  public void doAction(...) {
    ...
    response.setHeader("Cache-Control", "max-age=100000000000");
    response.setDateHeader("Expires", System.currentTimeMillis() + 100000000000);
    blobstoreService.serve(myBlobKey, response);
  }
}

然后当我curl -i http://url-serving-my-blob-here时,我得到了正确的图像,但是以下标题:

cache-control:no-cache, must-revalidate
expires:Fri, 01 Jan 1990 00:00:00 GMT

我的标题出现了什么想法?

1 个答案:

答案 0 :(得分:0)

它对我来说只是你实现它的方式。尝试在缓存控制上设置public

顺便说一下,if you want Google's edge cache to cache it,您必须设置public并且max-age少于365天。此外,Expires似乎没有帮助。

setHeader("Cache-Control", "public, max-age="+300*24*60*60);  // 300 days