Mysql
 sql >> база данни >  >> RDS >> Mysql

Отделете различна версия на уебсайт

Забележка:това решение е повече за производителност, отколкото за бързо коригиране и най-накрая приключих

Предполагам, тъй като използвате 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, за да извлечете информация за това, което трябва да покажете (съдържанието ще бъде същото, само оформлението ще се промени).

Едно нещо, което препоръчвам, е да оптимизирате вашите файлове. Мобилната версия на вашия сайт трябва да е по-лека по всякакъв начин (CSS, изображения, JS). Не искате вашият потребител да зарежда големи CSS, JS и изображения от мобилно устройство с бавна мрежа. Искате да оптимизирате колкото е възможно повече за по-бавно мрежово устройство. С други думи, не искате да показвате лого с размери 300x200 на устройство с флип телефон с размери 176x220. Един от начините ще бъде да наименувате файла си въз основа на домейна, в който се намира. Например:

  • 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 на телефона си. Също така препоръчвам да използвате компресия на изхода (като 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 /мобилен/ за да се уверите, че всичко изглежда добре за вашето мобилно устройство.

Що се отнася до обикновените PHP файлове, ще препоръчам да използвате централизирано място, специфичен път, който можете да използвате, а външният свят не може. Можете да поставите целия този код в обща папка, където всички сайтове имат достъп до тези файлове. Пример:

/web/lib/

По този начин никой, освен вас, няма да има директен достъп до вашите файлове. Във вашия PHP код ще направите нещо като (например скрипта за вход):

<?php
 define('BASE_PATH', '/web/lib/');
 require(BASE_PATH . 'filex.php');
 // etc...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите обратно данни от Mysql за дни, в които няма статистика

  2. Цени на хотелските стаи за различните сезони

  3. Изберете колони в различни бази данни

  4. Грешка при събитие в Mysql при използване на php

  5. Изберете част от MySQL Blob поле