2015-07-22 15 views
5

में मुझे डेटा Shiny Server के साथ एक ShinyApp तैनात करने की आवश्यकता है। चलाने के लिए, मेरे ऐप को .RData फ़ाइल (~ 300 मो) से डेटा चाहिए। यह .RData फ़ाइल फ़ाइल global.R फ़ाइल में स्थित कथन के साथ लोड की गई है। कंप्यूटर का फ़ंक्शन, लोडिंग को उपयोगकर्ता के लिए असभ्य रूप से कई मिनट की आवश्यकता हो सकती है।आर: केवल एक बार लोड करें। तैनात ShinyApp

हम .RDate फ़ाइल लोड केवल एक बार बनाने के लिए कैसे कर सकते हैं ताकि प्रत्येक नए उपयोगकर्ता को .RData फ़ाइल को फिर से लोड करने की आवश्यकता न हो?

धन्यवाद।

उत्तर

2

यदि आप global.R में ऑब्जेक्ट लोड करते हैं, तो बस इसे लोड होने के बाद। पहले के बाद प्रत्येक उपयोगकर्ता को आपके आवेदन की तेज़ पहुंच होनी चाहिए।

यदि आप स्थानीय रूप से अपना ऐप विकसित कर रहे हैं, तो आप निम्न तरीके से जो कह रहे हैं उसका परीक्षण कर सकते हैं। उदाहरण के लिए, उदाहरण के लिए,

runApp(port=5050) 

बस पोर्ट सेट करने के लिए शुरू करें। ऐप को प्रदर्शित करने के लिए आपको अपने ब्राउज़र के लिए कुछ समय चाहिए। लोड करने के बाद, अपने ऐप के पते पर ध्यान दें (127.0.0.1:5050 होना चाहिए), ऐप के ब्राउज़र टैब को बंद करें (लेकिन आर को रोकें नहीं), एक नया टैब खोलें और उपरोक्त पते को पता बार में रखें। अब, आपके ऐप तक पहुंच बहुत तेज होनी चाहिए।

यह सिर्फ इतना कहने के लिए कि जब तक चमकदार हो रहा है और चल रहा है, global.R में आदेश प्रारंभ में निष्पादित किए जाते हैं और उनका मूल्यांकन आर वैश्विक वातावरण में रखा जाता है। जब भी कोई उपयोगकर्ता ऐप से कनेक्ट होता है तो उन्हें निष्पादित नहीं किया जाता है।

यह भी विचार करें कि आप Rdata की लोडिंग को तेज कर सकते हैं यदि आप इसे compress=FALSE तर्क से सहेजते हैं। इस तरह, आपकी फ़ाइल बड़ी होगी, लेकिन इसे लोड करना तेज़ होगा।

+0

बहुत मदद! मैंने 'runApp (port = 5050)' के आधार पर अनुभव की कोशिश की और यह बहुत अच्छा काम किया! यह स्पष्ट हो सकता है लेकिन 'सत्र $ पर सत्र $ (फ़ंक्शन() {stopApp()})' सर्वर 'में नहीं होगा। आर' ताकि यह काम करता है .... 'compress = FALSE' के लिए भी धन्यवाद: बहुत उपयोगी। – JPL

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