3

Web ブラウザーがサーバーから特定の画像を要求しているかどうかを検出できますか? ユーザーが画像をダウンロードしたかどうか、またはブラウザーから既にキャッシュされているかどうかを確認したい。

本旨:

プロフィールページごとのユニークビジターをカウントしています。IPs今のところandを使用しCookiesていますが、これも追加したいと考えています。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 に答える