django

2015-08-17 10 views
16

पर फोलीयम का उपयोग करते समय सबसे अच्छा अभ्यास मैं django के साथ एक ऐप बना रहा हूं, जो शीर्ष वोट किए गए आइटमों का नक्शा प्रदर्शित कर रहा है।django

मैं एक अनुभवी वेब विकसित नहीं हूं और मुझे आश्चर्य है कि उन्हें कहां और कब और कहां बनाना चाहिए। (उदाहरण के लिए इस लाइन ->)

map_osm.create_map(path='osm.html') 

अभी मैं अपने views.py में रखा, और यह नक्शा जो प्रयोक्ता द्वारा इसे देखने के निर्माण कर रहा है, सवाल यह है कि - यह बहुत अधिक भूमि के ऊपर नहीं बनाता सर्वर के लिए गणना?

मैंने इसे हर एक्स वोट के रूप में अपडेट करने के बारे में सोचा, या एक मॉडल रखो जो इसे प्रबंधित करेगा।

इस तरह की स्थिति में सबसे अच्छा अभ्यास क्या है?

उत्तर

8

अमित। उपयोगकर्ता के लिए फ़ोलियम और बिल्डिंग मैप्स के लिए, हाँ, यह सर्वर के लिए कड़ी मेहनत कर सकता है, जब बहुत से उपयोगकर्ता गणना करना चाहते हैं। इसके लिए समाधान कर रहे हैं: Redis या Memcached (Django इसके लिए बैटरी है) के साथ

  1. कैशिंग। इस बिंदु पर आप कई घंटे तक कैश जीवनकाल ~ कुछ सेकंड सेट कर सकते हैं, यदि निर्देशांक समान हैं। Django दृश्य कैशिंग, टेम्पलेट कैशिंग या दूसरों प्रदान करता है।
  2. मानचित्रण के परिणाम को डीबी में सहेजें, इसलिए यदि उपयोगकर्ता कल के रूप में एक ही coodrinates की गणना करता है - Django डीबी से परिणाम ले जाएगा और टेम्पलेट के लिए तेजी से दिखाएगा।
  3. यदि कुछ भी आपकी आवश्यकताओं को पार नहीं करता है - बस डीजेंगो को तेज़ बनाएं, अप्रयुक्त मध्यवर्ती बंद करें, चलाने और तैनात करने के लिए गनिकोर्न \ uwsgi का उपयोग करें। वेब सर्वर और रैम और सीपीयू कोर (तैनाती पर) के लिए खोजें।
  4. आप अपनी परियोजना प्रोफाइलिंग करने का प्रयास कर सकते हैं, ताकि आप अपने प्रोजेक्ट में सबसे कंप्यूटिंग हिस्सा कहां पा सकें। जब आपको मिला - इसे तेज़ी से बनाओ।
0

कैशिंग जाने का सबसे अच्छा तरीका है, लेकिन चूंकि आप एक अनुभवी डेवलपर नहीं हैं, इसलिए मैं आपको एक वैकल्पिक समाधान दूंगा।

ऐसा लगता है कि जब भी कोई उपयोगकर्ता आपकी वेबसाइट के उस अनुभाग पर जाता है तो आप मानचित्र को फिर से गणना कर रहे हैं। एक समाधान सीधे एचटीएमएल फ़ाइल से लिंक करना है, और प्रत्येक सीआरओएन कार्य या पाइथन टाइमर के माध्यम से फ़ाइल को हर 30 मिनट (या जो कुछ भी आपको चाहिए) के माध्यम से अपडेट करना है। इस तरह आप केवल अपने सभी उपयोगकर्ताओं के लिए हर आधे घंटे में गणना करेंगे।