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 config जोड़ें:

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, Images, JS)। आप नहीं चाहते कि आपका उपयोगकर्ता धीमे नेटवर्क वाले मोबाइल डिवाइस से बड़े CSS, JS और छवियों को लोड करे। आप धीमे नेटवर्क डिवाइस के लिए जितना संभव हो उतना अनुकूलित करना चाहते हैं। दूसरे शब्दों में, आप 176x220 फ्लिप फोन डिवाइस पर 300x200 लोगो प्रदर्शित नहीं करना चाहते हैं। एक तरीका यह होगा कि आप अपनी फ़ाइल को उस डोमेन के आधार पर नाम दें जिसमें वे हैं। उदाहरण के लिए:

  • file.css (4k) V.S. फ़ाइल-m.css (0.4k)
  • logo.jpg (300px * 300px 15k) वी.एस. logo-m.jpg (100px * 40px 2k)

और आपके PHP कोड में आपके पास जेएस, इमेज और सीएसएस फाइलों को गतिशील रूप से लोड करने का तर्क हो सकता है। एक याद के रूप में, आप अपनी मोबाइल साइट को जितनी तेज़ी से लोड करते हैं, उतना ही अच्छा है। रखरखाव महत्वपूर्ण है लेकिन आपके उपयोगकर्ता भी हैं। यदि आपके पास एक धीमी मोबाइल साइट है, तो वे आपकी साइट पर न जाने और कहीं और जाने का रुझान करेंगे। हर कोई अपने फोन पर 3जी/4जी नेटवर्क या वाईफाई का उपयोग नहीं कर रहा है। साथ ही, मैं आउटपुट कम्प्रेशन (जैसे deflate का उपयोग करने की सलाह देता हूं। ) जब आप अपनी फाइलों को एक्सेस करना चाहते हैं।

यह आपके लोडिंग समय में सुधार करेगा, विशेष रूप से मोबाइल उपकरणों के लिए। अब, यदि आप उसी . का उपयोग करते हैं फ़ाइल, मान लें कि समाचार पत्र सबमिट करने के लिए जावास्क्रिप्ट फ़ाइल है, आप इसे डुप्लिकेट नहीं करना चाहते हैं और न ही इसे नाम से कॉपी करना चाहते हैं। अपने PHP में एक अतिरिक्त तर्क बनाने के बजाय, आप इस तरह एक प्रतीकात्मक लिंक बना सकते हैं:

ln -s /var/www/js/file.js /var/www/js/file-m.js

इस समाधान के साथ, आपको उनके द्वारा उपयोग किए जाने वाले उपकरण के प्रकार के आधार पर उपयुक्त साइट पर पुनर्निर्देशित करने की आवश्यकता होगी। आप नहीं चाहते कि फ्लिप फोन आपकी साइट के आईफोन संस्करण को देखे। इसे पूरा करने के लिए आप यहां कुछ तरकीबें अपना सकते हैं:

// 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. cPanel में MySQL डेटाबेस कैसे बनाएं

  2. Mysql तालिका से अद्वितीय कुंजी कैसे निकालें

  3. दिया गया सिंटैक्स mysql में मान्य क्यों है?

  4. मैं PHP का उपयोग करके MySQL डेटाबेस से छवियों को कैसे संग्रहीत और पुनर्प्राप्त कर सकता हूं?

  5. विंडोज़ के तहत MySQL में स्वत:पूर्ण