注:このソリューションは、クイックフィックスよりもパフォーマンスに関するものであり、ようやく完了しました。
memcacheを使用しているので、MySQLデータベースからコンテンツを取得し、PHPで解析してキャッシュに保存し、表示すると思います。
各バージョンには異なるドメインがあります。 iPhone / Android(およびその他のスマートフォン)はm.domain.com
を使用します ドメイン、タブレット(iPad、Galaxyなど)はt.domain.com
を使用します 、他のすべてはo.domain.com
を使用します デフォルトではwww.domain.com
が使用されます または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)V.S。 file-m.css(0.4k)
- logo.jpg(300px * 300px 15k)V.S。 logo-m.jpg(100px * 40px 2k)
また、PHPコードには、JS、画像、CSSファイルを動的にロードするロジックを含めることができます。覚えておいてください、あなたがあなたのモバイルサイトを速くロードするほど、それはより良いです。メンテナンス性は重要ですが、ユーザーも重要です。あなたが遅いモバイルサイトを持っているなら、彼らはあなたのサイトに行かず、どこかに行く傾向があります。誰もが自分の携帯電話で3G/4GネットワークまたはWiFiを使用しているわけではありません。また、出力圧縮を使用することをお勧めします(デフレート など )ファイルにアクセスする場合。
これにより、特にモバイルデバイスの読み込み時間が改善されます。ここで、同じを使用する場合 ファイル、たとえばニュースレターを送信するための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...