【问题标题】:GAE Java isn't downloading refreshed data of requested URLGAE Java 未下载请求 URL 的刷新数据
【发布时间】:2011-12-20 14:20:57
【问题描述】:

我目前正在从 URL 下载数据并拆分内容,只是为了在我的 apppot 上再次显示。来自 URL 的数据每天会更改数次。不过,我的 apppot 保持不变。 我认为我解决了这个问题,通过将 pragma 设置为“no-cache”并将标头的日期设置为 0。

这就是我的代码的样子和它的工作原理:

public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        resp.setHeader("Pragma", "no-cache");
        resp.setDateHeader("Expires", 0);

内容长度:15983 - 内容类型:文本/html - 日期:2011 年 12 月 20 日星期二 格林威治标准时间 14:06:53 - 到期时间:1970 年 1 月 1 日星期四 00:00:00 格林威治标准时间 - 编译指示:无缓存 服务器:谷歌前端

但我的 apppot 仍然没有像应有的那样从 URL 中获取刷新的数据。我在这里想念什么?由于没有任何变化,因为我已经更改了响应标头,所以我不知道还能做什么。

【问题讨论】:

  • 一种选择是稍微更改请求 URL - 例如添加 '?'和一个随机数 - 以防止在 GAE 端缓存。
  • 我怎样才能稍微更改请求 URL 并且仍然可以访问它?假设这是我的 URL: URL url = new URL("google.com"); BufferedReader reader.... 这个 URL 看起来像你的请求示例?
  • @dodinvents - 通常,附加一些未使用的参数并不会阻止它被提供 - 例如添加 '?n=123' 或者如果已经有参数追加 '&n=123'。所以new URL("google.com?n=123");
  • @sje397 - 非常感谢!我要试试。
  • 向我们展示您的其余代码。您正在通过设置缓存标头下载页面的服务器吗?此外,它不是“您的 apppot”,而是您的 App Engine 应用。 apppot 只是域。

标签: java google-app-engine


【解决方案1】:

当我编写 webapps 时,我总是在我的 servlet 和 JSP 中使用“Cache-Control”标头。

public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        resp.setHeader("Cache-Control", "no-cache");
}

有关此处的参考,您需要参考 RFC 2616 中的第 14.9 节。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

【讨论】:

  • 谢谢。我试过了,但没有用。似乎 GAE 不关心 resp.setHeader ......不过我会尝试 sje397 方法。
猜你喜欢
  • 2011-08-25
  • 2023-04-01
  • 2012-09-14
  • 2013-04-07
  • 2013-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多