什么“网络:未找到缓存条目[url:...]”是什么意思?

时间:2012-02-28 16:15:26

标签: java caching networking access-control worldwind

不久

在网络浏览器中运行applet期间,我无法弄清楚network: Cache entry not found [url: ...]消息在Java控制台中出现的常见原因是什么。我知道,当使用java.net.URLConnection(从互联网请求一些数据)执行时,这个可以出现,但仍然不知道寻找调查我的特定问题的任何可能的原因。所以我的问题是:此消息的可能原因是什么,这会影响应用程序的正常运行吗?最后,什么是缓存,我能以某种方式控制它吗?

详细

发布大型代码片段将会非常困难和不必要,所以我会尝试将问题描述得尽可能简单。

我正在构建一个基于NASA WorldWind的applet,并且在请求平铺图像层从JavaScript调用相应的applet方法时面临一种非常奇怪的行为。平铺图像层是一个可以覆盖3D地球的图层,由一组固定大小的图片(图块)组成,这些图片将在图层加载期间单独请求(假设图层类似于图块拼图:)。这就是为什么每个tile的请求都有自己的线程。

最初我有一个AccessControllerException,因为每个磁贴请求线程都没有权限发出跨域请求,并且读取/保存加载结果到本地文件缓存。通过

包装tile请求的实际代码已解决了这个问题
AccessController.doPrivileged(new PrivilegedAction() {

    @Override
    public Object run() {

        // Requesting tile and performing with the result...
        // ...
    }
});

结果,我看到tile被加载并存储在本地文件缓存目录中。但我仍然没有看到地球上的那层。事实是我在Java控制台中收到以下网络消息:

network: Cache entry not found [url: http://caches.scanex.ru/getTile.cgi?T=BMNG-01-2004&L=0&X=4&Y=1, version: null]
network: Connecting http://caches.scanex.ru/getTile.cgi?T=BMNG-01-2004&L=0&X=4&Y=1 with proxy=HTTP @ /192.168.4.10:8080

当这些消息出现时,我能够在代码中找到一个位置 - 获取HTTP响应代码时:

HttpURLConnection htpc = (HttpURLConnection)fconnection;
responseCode = htpc.getResponseCode();

然后,我发现为java.net.URL提供了URLConnection个实例,其他准备也在另一个帖子中进行。确切地说,tile的下载遍历以下线程的链,其中每个子线程由java.util.concurrent.FutureTask表示:

Layer's rendering thread>> Tile request task where URL is to be prepared basing on existing local cache data>> Reading tile contents and handling the result (storing in local cache if it's required(它出现在网络消息之上)。

最后,我使用AccessController.doPrivileged(...)构造为所有这些线程授予了权限,我可以看到所需的结果 - 平铺图像层被覆盖。但是我仍然对Cache entry not found消息感到困惑,因为它们被留在Java控制台中并出现在每个请求的磁贴上。这就是我想知道的原因:这种行为是正常的,这些消息实际意味着什么?

P.S。感兴趣的人 - http://caches.scanex.ru目前不在外面工作。

0 个答案:

没有答案