1


我正在 GAE 上开发一个应用程序,它获取一个网页并搜索它的链接。
该页面每天早上都会更新,因此每天早上每 15 分钟执行一次 cron 作业,持续几个小时,以获得当天的页面。

这就是问题所在:如果在第一次执行 cron 作业时,应用程序找到了旧页面(昨天的那个),它会继续获取那个页面,尽管在同一个 URL 处有一个新页面可用。
似乎在某处使用了缓存,但我无法禁用它。

应用程序用于下载页面的代码就是 Java I/O:

    InputStream input = null;
    ByteArrayOutputStream output = null;
    HttpURLConnection conn = null;
    URL url = new URL("http://www.page.url.net");
    try {
        conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(0);
        conn.setUseCaches(false);
        int httpResponseCode = conn.getResponseCode();
        if (httpResponseCode == HttpURLConnection.HTTP_OK) {
            input = conn.getInputStream();
            output = writeByteArrayOutputStreamFromInputStream(input);
        } else {
            throw new IOException("response code " + httpResponseCode);
        }
    } finally {
        if (input != null) {
            output.close();
            conn.disconnect();
        }
    }

怎么了?

4

1 回答 1

0

为了避免缓存,我建议使用这个简单的技巧:在查询字符串的末尾添加一个“假”查询参数,例如,如果您要获取的页面是

http://www.page.url.net

添加一个名为 dummy= 的参数,因此 url 变为:

http://www.page.url.net?dummy=2013-05-25

只要确保远程服务器实际上没有解释“虚拟”参数即可。

希望这可以帮助。

于 2013-05-27T12:55:20.937 回答