- ベストアンサー
大量の画像の表示について
こんにちは。 大量の画像(100~)を1ページ内に表示して、画像一覧表を作ったんですが、ページ読み込みにかなり時間がかかります。 「ひたすらforの中でファイルの有無確認(is_file)してhtmlタグ生成して~」と普通のことしかしてないので少しでも早く表示できる方法が知りたいです。 普通はこのような大量画像表示自体しないはずですが。。 JQueryとかで似たようなやつがあるみたいですが、使い方が不慣れで、会社の人間(本人いわく、サーバ管理者)からはシンボリックリンク使ってなんとかして、とか言われてるんですが、僕が無知なのか、ショートカットで何をしろ?と???です。 できればphpレベルでの解決策や少しでも早くする案。 最悪、JQueryのわかりやすいサンプルソースなど。 プログラムでみなさんはどういう工夫をされていたりするんでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
どんなファイルがあるか分からないから考えられるファイル名を総当たりして、例えば8文字の数字を全部回せば、一億回ループを回してることになるので・・・ということが前提でした。 そういうことでなく、ファイルのありなしの判断は、9回しかループを回していないことではないということでしたら、前提がことなりますから、シンボリックリンク云々は無視されて下さい。 まずは、プログラムをトレースしてなにがボトルネックになっているのかを絞り込む必要があると思われます。 たとえば、 ファイルを見つけるのに時間がかかっているのか HTMLの生成自体に時間がかかっているのか、 画像ファイルを毎回作り直しているのでそこで時間がかかっているのか、 サーバーの能力が足りないのか、 サーバーとブラウザとの通信経路が細いのか、 HTMLの生成自体はすんなりできているが TABLEが無駄に多重化しているとかで、ブラウザがそれを判断・展開して表示するまでのところで時間がかかってのか、 等々です。
その他の回答 (2)
- superside0
- ベストアンサー率64% (461/711)
そのforループって、もしかしてファイル名の総当りですか? たとえば、8桁の数字からなるファイル名を探すのに 10の8乗の1億回ループをまわして、作ったファイル名が実際にあるかを見ているとか・・・ それで、短いファイル名で収まるように、シンボリックリンク作ればってことなんではないかと。 ただ、そんなことしなくても、単純に、opendir()してreaddir()で 存在するファイルだけ取り出せばいいような気がしますが・・・
お礼
回答ありがとうございます。 1億回ループ。。。まあそうですね。 >短いファイル名で収まるように、シンボリックリンク作ればってことなんではないかと。 ファイルの有無が確定しないのにシンボリックの意味があるんでしょうか? 画像一覧表なので、ファイルが無い場合もノーイメージみたいな画像を出して、「ここは登録してない」と確認させなければなりません。 なのでopendir()してreaddir()でも、結局画像分のループが発生するわけで・・・。
補足
補足です。 画像の種類が3種類あって、 TOP画像1枚、詳細画像3枚・・・サイズ150*150で横並びで表示 この下に 備考画像5枚・・・サイズ130*130で横並びで表示 ファイル名も img_top、img_detail_*(1~3)、img_note_*(1~5) です。 画像ディレクトリ /img/ 各ID /上記の全9種類の画像
- php504
- ベストアンサー率42% (926/2160)
画像のサイズが大きすぎて転送に時間がかかっているのではないでしょうか それならサイズの小さいサムネイル画像を用意すれば早くなります
お礼
回答ありがとうございます。 サイズは1枚15K弱です。 150*150ぐらいで表示してるんですが、これぐらいでこのサイズは大きいんでしょうか?
お礼
回答ありがとうございます。 確認項目って結構あるんですね。 サーバーとブラウザとの通信経路とか考えたことすらないですからね。 参考にさせてもらいます。