3

我可以检测 Web 浏览器是否正在从服务器请求某个图像吗?我想检查用户是否下载了图像,或者它是否已经从浏览器缓存。

主要思想:

我正在计算每个个人资料页面的唯一身份访问者。我现在使用IPsandCookies但也想添加它。IP可以很容易地更改,Cookie可以被阻止/删除。我的想法是像使用flash cookie. 图像1px x 1px的大小将不会对用户可见。我根本没有使用 ActionScript 和 Flash 的经验,所以我无法使用flash cookie并想尝试使用它。

编辑: 正如我从 Sven 的回答中了解到的,也许我无法解释我需要什么。我的问题和斯文的回答一样。怎么做 wait for the request to appear on the server?我希望浏览器缓存图像,因此只有当用户是唯一访问者时才会下载它,即他是第一次查看该页面。

我想获取这些信息并检查图像是否被请求(即它被缓存)。就像是:

$requested_files = $_SERVER['REQUESTS']; // Or something similar, this is the question.
$file_name = $profile_page_owner_id.'.png'; // For example.

if(in_array($file_name, $requested_files)) {
    // File is requested, so it is not cached. This is an unique visitor.
    // Of course except this I will continue to check IP and Cookie.
    // This will be the 3rd check.
} else {
    // File is not requested, so it is already cached.
    // Page is viewed before, this is not an unique visitor.
}
4

3 回答 3

1

假设您的图像路径设置为 ,user_track.php浏览器将请求文件,您在哪里进行日志记录,然后发送适当的标题和图像本身。

您甚至可以发送拒绝缓存标头,以便默认情况下不会缓存图像。

于 2012-10-04T07:05:18.967 回答
1

只需创建一个将输出图像的 PHP 文件,在输出之前添加您需要的逻辑(计数和东西),在 html 图像中调用 php 文件并通过发送像这样的标题来强制缓存图像header('Cache-Control: max-age=37739520, public');

你可以看看这个帖子:How to get the browser to cache images, with php? 有关缓存的更多信息。

于 2012-10-04T07:19:12.357 回答
0

您只需等待请求出现在服务器上即可检测到它。

如果你收到一个请求,浏览器没有缓存它。

如果您不希望浏览器缓存它,只需在 http 标头中说明即可。然后你每次都会收到请求。

编辑:好的,如果您想要缓存图像,只需发送允许在浏览器中无限期缓存的缓存标头。通常图像只会被请求一次。请求的检测保持不变。

于 2012-10-03T12:48:12.317 回答