2017-08-11 4 views
0

私のサイトにはユーザーがアバターをアップロードできるアバターアップロード機能があります。問題は、ユーザーが別のアバターをアップロードしようとすると、ブラウザのキャッシュがハードリフレッシュ(Ctrl + F5)またはブラウザのキャッシュをクリアするまで、以前のアバターを表示し続けることです。ユーザーが新しいものをアップロードした後に、それは彼らの古いのではなく、彼らの最新のアバターが表示されるように、私はアバターのためにキャッシュをリフレッシュするにはどうすればよい特定の画像のキャッシュをリフレッシュする(アバターアップロード)

<img src="{{ secure_asset('storage/avatars/' . $user_id . '/avatar.png') }}" /> 

現在は、これは私がアバターを表示するために何をすべきかです1?

答えて

-1

キャッシングはブラウザによって行われ、サーバー側からはブラウザのキャッシュ機能を制御できないため、ユーザーのブラウザキャッシュをバックエンドから更新することはできません。

適切なhttpヘッダーを渡して、特定のWebページをキャッシュしないようブラウザに明示的に指示できます。特定のページが常にキャッシュではなくサーバーからロードされるようにします。

phpのためにあなたは、 "キャッシュの無効化"

<meta http-equiv="Expires" content="Tue, 14 Aug 2017 12:12:12 GMT"> 
<meta http-equiv="Pragma" content="no-cache"> 
+0

どのようにTwitterやFacebookのようなサイトは、プロフィール写真のキャッシュを更新するのですか? – user489153

+0

更新された回答を参照 –

0

あなたが活用することができ、あなたも同様にHTMLでこれを行うことができ、ヘッダ

header('Cache-Control: no-cache'); 
header('Pragma: no-cache'); 

の下に使用することができます。イメージを保存すると、バージョン番号をユーザーテーブルに保存できます。ユーザーが初めてアバターを保存するときはavatar_version列を1に設定します。新しいアバターをアップロードするときにバージョン番号を増やします。あなたはそれをつかむときだから、それは文句を言わないファイルに影響を与え、GETパラメータを変更した場合

<img src="{{ secure_asset('storage/avatars/' . $user_id . '/avatar.png')."?version=".$user->avatar_version }}" /> 

を呼び出すことができますが、ブラウザは異なる画像として認識し、この新しいものをつかむだろう。

関連する問題