Remarque: cette solution est plus sur les performances de quick fix et j'ai enfin fini de
Je suppose que depuis que vous êtes à l'aide de memcache vous obtenez votre contenu à partir d'une Base de données MySQL, puis de l'analyser en PHP et l'enregistrer dans la mémoire cache et l'afficher.
Chaque version aurait un autre domaine. iPhone/Android (et d'autres smartphone) utiliser l' m.domain.com
de domaine, les tablettes (iPad, galaxy etc...) utilisera t.domain.com
, tous les autres pourront utiliser o.domain.com
et la valeur par défaut utiliser www.domain.com
ou domain.com
.
Tous ces sous-domaines peuvent pointer vers le même dossier (/var/www/
- celui par défaut). Ce qui va faire le truc est de savoir comment vous l'appelez.
Ajouter cette votre .htaccess ou de configuration d'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]
Donc, dans votre fichier PHP, vous pouvez utiliser l' $_GET['subdomain']
et de décider ce que vous devez faire pour générer votre page. De cette façon, il est très facile à entretenir, vous avez 1 point d'entrée et vous pouvez configurer des règles en PHP pour récupérer des informations sur ce que vous avez besoin d'afficher le contenu sera le même, seule la mise en page va changer).
Une chose que je recommande sera d'optimiser vos fichiers. La version mobile de votre site doit être plus doux de toute manière (CSS, Images, JS). Vous ne voulez pas que votre utilisateur de charger de grosses CSS, JS et les images à partir d'un appareil mobile avec un réseau lent. Vous souhaitez afin d'optimiser autant que possible pour les plus lents périphérique réseau. En d'autres termes, vous ne souhaitez pas afficher une 300x200 logo sur un 176x220 flip téléphone de l'appareil. Une voie sera de donner un nom à votre fichier selon le domaine dans lequel ils sont. Par exemple:
- fichier.css (4k) V. S. fichier-m.css (0,4 k)
- logo.jpg (300px * 300px 15k) V. S. logo-m.jpg (100px * 40px 2k)
Et dans ton code PHP, vous pouvez avoir une logique de charger dynamiquement en JS, les Images et la CSS de fichiers. Comme un souvenir, plus vite vous chargez votre mobile site, mieux c'est. Maintability est important, mais vos utilisateurs sont trop. Si vous avez une lente site mobile, ils auront tendance à ne pas aller à votre site et aller quelque part d'autre. Pas tout le monde est en utilisant le réseau 3G/4G ou WiFi sur leur téléphone. Aussi, je recommande d'utiliser les sorties de compression (comme dégonfler) lorsque vous souhaitez accéder à vos fichiers.
Cela permettra d'améliorer votre temps de chargement, spécialement pour les appareils mobiles. Maintenant, si vous utilisez le même fichier, disons un fichier Javascript pour soumettre un communiqué de lettres, vous ne voulez pas reproduire ni le copier avec le nom. Au lieu de créer une logique supplémentaire dans votre PHP, vous pouvez créer un lien symbolique comme ceci:
ln -s /var/www/js/file.js /var/www/js/file-m.js
Avec cette solution, vous aurez besoin de rediriger vers le site approprié en fonction du type d'appareil qu'ils utilisent. Vous ne voulez pas un téléphone à clapet afficher une version iPhone de votre site. Voici quelques truc que vous pouvez faire pour accomplir ce:
// 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();
}
OU dans le .htaccess/config d'apache sous le site par défaut:
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...
Je vous recommande de regarder à http://detectmobilebrowsers.com/ pour savoir ce que vous pouvez utiliser pour les appareils mobiles et vous pouvez vérifier http://validator.w3.org/mobile/ pour s'assurer que tout semble bon pour votre appareil mobile.
La commune de PHP les fichiers, je vous recommande d'utiliser une centralisation place, un chemin d'accès spécifique, vous pouvez utiliser et le monde extérieur ne peut pas. Vous pouvez mettre tout ce code dans un dossier commun où tous les sites peuvent accéder à ces fichiers. Exemple:
/web/lib/
De cette façon, personne, sauf vous, pouvez directement accéder à vos fichiers. Dans votre code PHP que vous allez faire quelque chose comme (par exemple le script de connexion):
<?php
define('BASE_PATH', '/web/lib/');
require(BASE_PATH . 'filex.php');
// etc...