こんにちは。
画像のキャッシュについて質問させて頂いてもよろしいでしょうか?
日本語がファイル名に入っている場合に更新しようとすると
元画像.jpg
更新画像.jpg
がどちらも20.jpgのようにID+拡張子になってしまい、ブラウザが更新されてないと判断して古い画像が表示されてしまいます。
そこで半角英数字のみでファイル名を変更すれば
moto.jpg
kousinn.jpg
ファイル名が反映されて正常に表示されたのですが、サムネイルが20.preview.jpgのままで表示が更新されていませんでした。
自分の環境だけならば更新ボタンを押せば済むのですが、詳細ページを開くたびにユーザー側で更新ボタンを押して貰うのは現実的では無く、強制的に全体を更新させる方法やキャッシュの期間を短くするとサーバーの負担が大きくなるのでどうすれば良いかと悩んでいます。
理想はファイル名に画像更新日時を追加できれば良いのですが、cgiを大幅に変更することになりそうで現実的ではなく・
20.fileneme.20150216025030.jpg
20.fileneme.20150216025030.preview.jpg
ファイル名が同一でもユーザー側で更新される良い方法をご存知の方がおられましたら、ご教示いただけませんでしょうか。
よろしくお願い致します。
ご質問ありがとうございます。
ご指摘の通り、更新直後については、キャッシュ画像が表示される可能性が高いです。ただ、更新時から一定時間が経つと、どのブラウザもキャッシュを更新するようになっているものと思います。
サムネイル画像のファイル名は固定となっているため、別の名前を付けることは難しいのが実情です。
以上参考になりましたら幸いです。
管理人様、返信ありがとうございます。
サムネイルのキャッシュですが、previewが付いているのに注目し.htaccessでサムネイルファイルの寿命を短くして対応する事にしました。
<Files ~ "\.preview\.jpg$">
Header set Cache-Control "max-age=3600, public"
</Files>
サムネイルはサイズが小さいのでサーバーの負担も最小限で済みそうです。
上記方法とは別にリアルタイム更新が出来ないか調べていたのですが、ファイル名の後に?日付で対応する裏ワザ的な方法がある様なのでテスト中です。
id=132 ファイル添付
id=179 作成時/更新時 更新時 %Y%M%D%h%min
<a href="./files/1/3/132.yuruhati_test.jpg" rel="lightbox[ss6]" title="ゆるはちの画像"><img src='./files/1/3/132.preview.jpg?<!--field id="179"--><!--/field-->' width="180" height="101" border="0" alt="ゆるはちの画像" title="ゆるはちの画像" /></a>
上記方法でテストはできたのですが、ここでid=132のデータ(URL・タイトル等)をどうやって個別取得するか悩んでいます。
<!--field id="132"--><!--/field-->
から個別にデータを取り出す方法は存在するのでしょうか?
再度の質問で申し訳ないのですが、よろしくお願い致します
ご返信ありがとうございます。
整形済みのフィールドデータではない、個別のフィールドデータを取り出す方法はないです。
ただ、JavaScript で、src の値に追記するような方法でしたら、可能ではないかと思います。
以上参考になりましたら幸いです。
管理人様、返信ありがとうございます。
<!--field id="??"--><!--/field-->
のタグからデータを取り出せるかは前から疑問に思っていた箇所なので、出来ないと分かりスッキリしました。
?日付の件はアドバイス通りにJavaScriptでチャレンジしてみます。
管理人様、回答・アドバイスありがとうございました。
すごく助かりました♪