注: この解決策は、迅速な修正よりもパフォーマンスに関するものであり、最終的に完了しました
memcache を使用しているため、MySQL データベースからコンテンツを取得し、PHP で解析してキャッシュに保存し、表示すると仮定します。
各バージョンには異なるドメインがあります。iPhone/Android (およびその他のスマートフォン) はm.domain.com
ドメインを使用し、タブレット (iPad、galaxy など...) は を使用しt.domain.com
、その他はすべて使用o.domain.com
し、デフォルトではwww.domain.com
orを使用しますdomain.com
。
これらのサブドメインはすべて、同じフォルダー ( /var/www/
- デフォルトのフォルダー) を指すことができます。トリックを行うのは、それをどのように呼び出すかです。
これを .htaccess または apache 構成に追加します。
SetEnvIf Host ^www\. page=www
SetEnvIf Host ^o\. page=others
SetEnvIf Host ^m\. page=mobile
SetEnvIf Host ^t\. page=tablets
rewriterule ^.*$ index.php?subdomain=%{ENV:page} [QSA,L]
したがって、PHP ファイルで を使用して$_GET['subdomain']
、ページを生成するために何をする必要があるかを決定できます。このようにすると、メンテナンスが非常に簡単になります。入力ポイントが 1 つだけで、PHP でルールを設定して、表示する必要がある情報を取得できます (コンテンツは同じで、レイアウトのみが変更されます)。
私がお勧めすることの 1 つは、ファイルを最適化することです。あなたのサイトのモバイル版は、何らかの方法 (CSS、画像、JS) で軽くする必要があります。ネットワークが遅いモバイル デバイスから大きな CSS、JS、および画像をユーザーに読み込ませたくない場合。低速のネットワーク デバイスを可能な限り最適化する必要があります。つまり、176x220 のガラケー デバイスに 300x200 のロゴを表示したくないということです。1 つの方法は、ファイルが属するドメインに基づいてファイルに名前を付けることです。次に例を示します。
- file.css (4k) VS file-m.css (0.4k)
- logo.jpg (300px * 300px 15k) VSロゴ-m.jpg (100px * 40px 2k)
また、PHP コードには、JS、画像、および CSS ファイルを動的にロードするロジックを含めることができます。覚えておいてください、モバイル サイトの読み込みが速ければ速いほど、それは優れたものになります。保守性は重要ですが、ユーザーも重要です。モバイルサイトの速度が遅い場合、ユーザーはあなたのサイトにアクセスせず、別の場所に移動する傾向があります。誰もが携帯電話で 3G/4G ネットワークや WiFi を使用しているわけではありません。また、ファイルにアクセスする場合は、出力圧縮 ( deflateなど) を使用することをお勧めします。
これにより、特にモバイル デバイスの場合、読み込み時間が改善されます。同じファイル、たとえばニュースレターを送信するための Javascript ファイルを使用する場合、名前を付けて複製したりコピーしたりしたくはありません。PHP で追加のロジックを作成する代わりに、次のようなシンボリック リンクを作成できます。
ln -s /var/www/js/file.js /var/www/js/file-m.js
このソリューションでは、使用するデバイスの種類に応じて適切なサイトにリダイレクトする必要があります。折り畳み式携帯電話でサイトの iPhone バージョンを表示したくありません。これを実現するためにできるいくつかのトリックを次に示します。
// PHP version - also make sure the current domain is checked otherwise you will be in an infinite loop!
if(strpos($_SERVER['HTTP_USER_AGENT'],'iPhone') !== FALSE || strpos($_SERVER['HTTP_USER_AGENT'],'Android') !== FALSE)
{
header('Location: http://m.domain.com/');
exit();
}
または、デフォルト サイトの .htaccess/apache 構成内:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "iphone|android" [NC]
RewriteCond %{HTTP_HOST} !^mobile.domain.com
RewriteRule ^(.*)$ http://m.domain.com/ [L,R=301] # or 302 if you want temporary
# etc...
http://detectmobilebrowsers.com/を参照して、モバイル デバイスで使用できるものを確認することをお勧めします。また、http: //validator.w3.org/mobile/をチェックして、すべてがモバイル デバイスで適切に表示されることを確認してください。 .
一般的な PHP ファイルに関しては、一元化された場所、つまり使用できる特定のパスを使用することをお勧めしますが、外部の世界は使用できません。このコードはすべて、すべてのサイトがこれらのファイルにアクセスできる共通のフォルダーに配置できます。例:
/web/lib/
このようにして、あなた以外の誰もあなたのファイルに直接アクセスできなくなります。PHP コードでは、次のようなことを行います (たとえば、ログイン スクリプト)。
<?php
define('BASE_PATH', '/web/lib/');
require(BASE_PATH . 'filex.php');
// etc...