私たちはウェブサイトをスケーリングしており、サブドメイン (または、 CDNなどの別のドメインでさえも) でイメージをホストする可能性がある将来の計画を立てたいと考えています。現在、次の HTML を使用して HTML/PHP コードで画像を参照しています。
<img src="/images/ourlogo.jpg" alt="Our Logo" />
私は次の場所に移動するために会社のコンベンションを開始することを考えていました:
<img src="<?php echo STAT_IMG;?>ourlogo.jpg" alt="Our Logo" />
ここで、STAT_IMG はグローバル PHP 定数であり、最初は現在の状況と同一になるように定義されます。つまり、
define('STAT_IMG', '/images/');
ただし、後で次のように変更できます。
define('STAT_IMG', 'http://www.superfastcdn.com/');
これを行うと何か問題が発生しますか?
私がすでに考えていること:
- コードベースにはさらに多くの文字列が追加されることがわかりますが、パフォーマンスの点では目立たないと思います。
- コードが醜くなります (特に、PHP と HTML が混在している私の例では)。
- 1 つの問題は、画像 (またはその逆バージョン) に明示的に https を使用する必要がある場合があることです。たとえば、画像を電子メールに入れると、多くのクライアント (gmail など) が https プロトコルを使用するため、http を参照するリソース (つまり、暗号化されていないプロトコル) は一部のブラウザー (IE など) で混合コンテンツの警告を生成します。encosia のこの記事に
STAT_IMG
は、 「プロトコルレス」として定義することで、これを回避するためのアイデアがありdefine('STAT_IMG', '//www.superfastcdn.com/');
ます。彼らのアイデアがうまくいくことを願っています。- プロトコルを明示的に定義するために、他のいくつかの定数が必要になる場合があります。たとえば
define('STAT_IMGS', 'https://www.example.com/images/');
、define('STAT_IMGNS', 'http://www.example.com/images/');
以前の非絶対バージョン (define('STAT_IMG', '/images/');
) に加えてです。
- プロトコルを明示的に定義するために、他のいくつかの定数が必要になる場合があります。たとえば
- JavaScript や CSS スタイルシートなどの他の静的リソースにも同じ戦略を適用する必要があります。