Catatan:solusi ini lebih tentang kinerja daripada perbaikan cepat dan akhirnya saya selesai
Saya berasumsi karena Anda menggunakan memcache, Anda mendapatkan konten dari Database MySQL, lalu menguraikannya dalam PHP dan menyimpannya ke cache dan menampilkannya.
Setiap versi akan memiliki domain yang berbeda. iPhone/Android (dan ponsel cerdas lainnya) akan menggunakan m.domain.com
domain, tablet (iPad, galaxy dll...) akan menggunakan t.domain.com
, semua yang lain akan menggunakan o.domain.com
dan default akan menggunakan www.domain.com
atau domain.com
.
Semua sub-domain ini dapat mengarah ke folder yang sama (/var/www/
- yang default). Apa yang akan berhasil adalah bagaimana Anda menyebutnya.
Tambahkan ini .htaccess atau konfigurasi apache Anda:
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]
Jadi dalam file PHP Anda, Anda dapat menggunakan $_GET['subdomain']
dan putuskan apa yang perlu Anda lakukan untuk menghasilkan halaman Anda. Dengan cara ini, perawatannya sangat mudah, Anda memiliki 1 titik masuk dan Anda dapat mengatur aturan di PHP untuk mengambil informasi tentang apa yang perlu Anda tampilkan (kontennya akan sama, hanya tata letaknya yang akan berubah).
Satu hal yang saya sarankan adalah untuk mengoptimalkan file Anda. Versi seluler situs Anda harus lebih ringan dengan cara apa pun (CSS, Gambar, JS). Anda tidak ingin pengguna Anda memuat CSS, JS, dan gambar besar dari perangkat seluler dengan jaringan yang lambat. Anda ingin mengoptimalkan sebanyak mungkin untuk perangkat jaringan yang lebih lambat. Dengan kata lain, Anda tidak ingin menampilkan logo 300x200 pada perangkat ponsel flip 176x220. Salah satu caranya adalah dengan memberi nama file Anda berdasarkan domain tempat mereka berada. Misalnya:
- file.css (4k) V.S. file-m.css (0.4k)
- logo.jpg (300px * 300px 15k) V.S. logo-m.jpg (100px * 40px 2k)
Dan dalam kode PHP Anda, Anda dapat memiliki logika untuk memuat file JS, Gambar, dan CSS secara dinamis. Perlu diingat, semakin cepat Anda memuat situs seluler, semakin baik. Pemeliharaan itu penting tetapi pengguna Anda juga. Jika Anda memiliki situs seluler yang lambat, mereka akan cenderung tidak mengunjungi situs Anda dan pergi ke tempat lain. Tidak semua orang menggunakan jaringan 3G/4G atau WiFi di ponsel mereka. Juga, saya sarankan untuk menggunakan kompresi keluaran (seperti deflate ) ketika Anda ingin mengakses file Anda.
Ini akan meningkatkan waktu pemuatan Anda, khususnya untuk perangkat seluler. Sekarang, jika Anda menggunakan sama file, misalkan file Javascript untuk mengirimkan surat berita, Anda tidak ingin menduplikasi atau menyalinnya dengan nama. Alih-alih membuat logika tambahan di PHP, Anda dapat membuat tautan simbolis seperti ini:
ln -s /var/www/js/file.js /var/www/js/file-m.js
Dengan solusi ini, Anda perlu mengarahkan ulang ke situs yang sesuai tergantung pada jenis perangkat yang mereka gunakan. Anda tidak ingin ponsel flip melihat versi iPhone dari situs Anda. Berikut beberapa trik yang dapat Anda lakukan untuk melakukannya:
// 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();
}
ATAU di konfigurasi .htaccess/apache di bawah situs default:
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...
Saya sarankan untuk melihat http://detectmobilebrowsers.com/ untuk mengetahui apa yang dapat Anda gunakan untuk perangkat seluler dan Anda dapat memeriksa http://validator.w3.org /mobile/ untuk memastikan semuanya terlihat bagus untuk perangkat seluler Anda.
Pada file PHP umum, saya akan merekomendasikan untuk menggunakan tempat terpusat, jalur tertentu yang dapat Anda gunakan dan dunia luar tidak bisa. Anda dapat meletakkan semua kode ini di folder umum di mana semua situs dapat mengakses file-file ini. Contoh:
/web/lib/
Dengan cara ini, tidak seorang pun, kecuali Anda, yang dapat mengakses file Anda secara langsung. Dalam kode PHP Anda, Anda akan melakukan sesuatu seperti (misalnya skrip login):
<?php
define('BASE_PATH', '/web/lib/');
require(BASE_PATH . 'filex.php');
// etc...