nginxとPHP-FPMでの@2x画像のエラーについて


お世話になります。
タイトルの通り、nginxとPHP-FPMでWebサービスを運用しているのですが、エラーログに「No such file or directory」が大量に出力され、何事かと思ったらすべて「@2x」の読み込みに失敗している、という内容でした。

おそらく、Retina対応デヴァイスからアクセスすると、すべて@2xを読み込もうとして出ているエラーではないかと認識しております。たしかに@2x画像は用意しておりません。

画像もたくさんあることから、今から@2xをすべて生成することは非現実的な状態です。

このエラーを回避するためには、どのような対処が最良でしょうか。Retina対応デヴァイスで見た時の画像の鮮明さにはこだわっていないので、可能なら、Retinaでも通常でも同じ画像ファイルを読み込むようにし、エラーを回避したいと考えています。

以上、よろしくお願い致します。

回答の条件
  • 1人50回まで
  • 登録:
  • 終了:2015/06/09 21:14:16
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント500pt

コンテンツは、どうやって作ってますか?
Wordpress を使ってるとか、自作の PHP スクリプトにどこぞの HTML テンプレートをかませているとか。

Retina 対応は、srcset 属性を使って明示的に Retina 用の画像を指定するか、CSS もしくは javascript を使って画像を切り替えるように、コンテンツで作り込みます。
デバイスが勝手に Retina 用の画像を要求してくるわけではありません。

ご自分で意識していないということは、Retina 用に属性を変更したりするような javascript の処理が導入されているんじゃないかと想像します。

参考:Webサイト&WebアプリのRetina対応方法まとめ | KRAY Inc


そのサイトって、URL を公開できたりしますか?
現物を確認してみるのが早いんじゃないかと思うので。

他2件のコメントを見る
id:a-kuma3

PHP のスクリプトを修正することに抵抗があるのであれば、retina.js でアクセスしてきた環境が Retina かどうかを判定している個所があるので、それを無効にするような修正を入れるのもひとつの手だと思います。
retina.js の 50行目(最新だったら)。

    Retina.isRetina = function(){

        return false;   /* ★ この一行を足して、常に Retina ではない、と判定させる */

        var mediaQuery = '(-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx)';

        if (root.devicePixelRatio > 1) {
            return true;
        }

https://github.com/imulus/retinajs/blob/master/src/retina.js#L50

2015/06/09 10:33:24
id:cafe-beret

a-kuma3様
全くもっておっしゃるとおりでした。一つ目にご教示頂いた内容で対応をしましたら、エラーが皆無となりました。
完全に考え方が反対だったのですね。お恥ずかしい限りです。。

この度は誠にありがとうございました。

2015/06/09 21:16:39

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません