2011-07-30 13 views
8

मैं php/mysql, और jquery का उपयोग कर अपनी पहली वेबसाइट लिख रहा हूं। अगले भाग के लिए, उपयोगकर्ता विशिष्ट वस्तुओं (जैसे उन्नत खोज, प्रकार) खोजने के लिए फ़िल्टर और प्रकार लागू करेगा और एक खोज बॉक्स भी होगा। मैं चाहता हूं कि जैसे ही कोई चेकबॉक्स फ़िल्टर बदल जाता है, डेटा को परिवर्तन को प्रतिबिंबित करना चाहिए (वर्तमान में एक परीक्षण AJAX कॉल है जिसमें ऐसा करने के लिए कोई डेटाबेस क्वेरी नहीं है जो अच्छी तरह से काम करता है)।क्या यह बड़ी क्वेरी करना और jquery के साथ फ़िल्टर करना बेहतर है, या अधिक छोटे प्रश्न पूछना बेहतर है?

क्या क्वेरी स्ट्रिंग को दोबारा बनाने के लिए बेहतर होगा और प्रत्येक फ़िल्टर में परिवर्तन के समय डेटा को फिर से पूछना बेहतर होगा, या फिल्टर के आधार पर परिणामों को फ़िल्टर करने के लिए एक बड़ी क्वेरी बनाने और फ़िल्टर करने के लिए बेहतर होगा?

समय के लिए, रिकॉर्ड्स की संख्या कम होगी, लेकिन हजारों में बढ़ना संभव है।

+0

क्या आप अनावश्यक डेटा चाहते हैं? –

+0

@ डैनियल रूफ मुझे यकीन नहीं है कि इसका मतलब क्या है। फ़िल्टरिंग और सॉर्टिंग एक ही टेबल से खींच रही है और परिणाम प्रदर्शित कर रही है। – xdumaine

+0

अच्छी तरह से यदि आप कई बार लोड करते हैं डेटा जो befor के समान है ई जावास्क्रिप्ट में ऑब्जेक्ट्स के रूप में बहुत अधिक है और अधिकांश डेटा वही होगा, सही mysql क्वेरी बनाएं और सर्वर को आपके लिए संसाधित करने दें (इसलिए क्लाइंट डॉनस्ट लटकता है) अधिकतर समय आपका सर्वर कुछ भी नहीं करता है, आप इस क्वेरी को लोड कर सकते हैं .load() का उपयोग करके AJAX और सॉर्टिंग के लिए एक php फ़ाइल पैरामीटर दें और –

उत्तर

7

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

  1. क्लाइंट को बड़ा डेटा डाउनलोड।
  2. जावास्क्रिप्ट को परिणामों को संसाधित करने (क्रमबद्ध/फ़िल्टर करने) की आवश्यकता होगी और उपयोगकर्ता ने जो पूछा है उसे प्रदर्शित करने की आवश्यकता होगी।

यह मेरी पुस्तकों में कोई ब्रेनर नहीं है। आप अपने डेटाबेस के आकार के साथ स्केल करने के लिए अपने समाधान को फिर से काम करने के लिए समाप्त हो जाएंगे, जो कि नहीं है।

सर्वर डेटा के ट्रक लोड के माध्यम से प्रश्नों को हल करने और छंटाई और फ़िल्टर करने में अच्छा है। यदि आपके पास कोई विकल्प है तो यह वास्तव में क्लाइंट पक्ष पर कुछ नहीं करना चाहिए।

+1

पर "कोई ब्रेनर" भाग स्पॉट पर नहीं है और मैं सहमत हूं। – jackJoe

+0

धन्यवाद! मैं इसे लागू करने की उम्मीद कर रहा हूं! – xdumaine

+0

यह आपको उन लोगों से भी सुरक्षित रखता है जो आपकी वेबसाइट को जानकारी से स्क्रैप करते हैं और साथ ही दूसरों की सुरक्षा और गोपनीयता – Nitroware

1

इस मामले में मैं फ़िल्टर की गई जानकारी प्राप्त करने के लिए AJAX कॉल का सुझाव दूंगा। आप दिखाए गए विकल्पों की संख्या को सीमित करना भी चाह सकते हैं। हजारों विकल्पों को प्रस्तुत करने के बजाय (जो समय लेने वाला हो सकता है) आप 25 से 50 या 100 से अधिक विकल्प प्राप्त करने के लिए अपनी क्वेरी को सीमित कर सकते हैं। यह समय बचाता है (कम करने के लिए कम जानकारी, सर्वर पक्ष करने के लिए कम काम, तेज डेटा हस्तांतरण और तेज़ क्लाइंट साइड ऑपरेशंस छोटी राशि के कारण। और ​​आपके उपयोगकर्ता अभी भी फ़िल्टरिंग का उपयोग जानकारी प्राप्त करने के लिए कर सकते हैं।

यदि रिकॉर्ड्स की संख्या कम रहने की संभावना है (हजारों की बजाय रिकॉर्ड के दसियों) यह AJAX का उपयोग किए बिना क्लाइंट साइड फ़िल्टरिंग को कार्यान्वित करने के लिए तेज़ हो सकता है। लेकिन फिर आपको जावास्क्रिप्ट में डेटा फ़िल्टर करने का एक तरीका ढूंढना होगा, जिसके बारे में इसका प्रभाव हो सकता है स्वयं।

संबंधित मुद्दे

 संबंधित मुद्दे