"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > लारवेल में कोड अनुकूलन और प्रदर्शन सुधार के लिए युक्तियाँ

लारवेल में कोड अनुकूलन और प्रदर्शन सुधार के लिए युक्तियाँ

2024-11-02 को प्रकाशित
ब्राउज़ करें:888

Tips for Code Optimization and Performance Improvement in Laravel

लारवेल एक मजबूत और सुरुचिपूर्ण ढांचा है, लेकिन जैसे-जैसे आपका एप्लिकेशन बढ़ता है, इसके प्रदर्शन को अनुकूलित करना आवश्यक हो जाता है। प्रदर्शन को बेहतर बनाने और अपने लारवेल एप्लिकेशन को अनुकूलित करने में मदद करने के लिए युक्तियों और उदाहरणों के साथ यहां एक व्यापक मार्गदर्शिका दी गई है।

1. उत्सुक लोडिंग बनाम आलसी लोडिंग

समस्या: डिफ़ॉल्ट रूप से, लारवेल आलसी लोडिंग का उपयोग करता है, जिसके परिणामस्वरूप "एन 1 क्वेरी समस्या" हो सकती है, जहां कई डेटाबेस क्वेरी अनावश्यक रूप से सक्रिय हो जाती हैं।

अनुकूलन: संबंधित डेटा को एक क्वेरी में लोड करने के लिए उत्सुक लोडिंग का उपयोग करें, रिश्तों के साथ काम करते समय प्रदर्शन में उल्लेखनीय सुधार होता है।

पहले (आलसी लोडिंग):

// This runs multiple queries (N 1 Problem)
$users = User::all();

foreach ($users as $user) {
    $posts = $user->posts;
}

बाद में (उत्सुक लोडिंग):

// This loads users and their posts in just two queries
$users = User::with('posts')->get();

मुख्य उपाय: जब आप जानते हैं कि आपको संबंधित मॉडल की आवश्यकता होगी तो हमेशा उत्सुक लोडिंग का उपयोग करें।


2. महंगी क्वेरीज़ के लिए कैशिंग का उपयोग करें

समस्या: बार-बार एक ही डेटा (जैसे उपयोगकर्ता सूचियां, सेटिंग्स, या उत्पाद कैटलॉग) लाने से प्रदर्शन में बाधाएं पैदा हो सकती हैं।

अनुकूलन: लोड समय और डेटाबेस क्वेरी को कम करने के लिए महंगी क्वेरी और गणना के परिणामों को कैश करें।

पहले (कोई कैशिंग नहीं):

// Querying the database every time
$users = User::all();

बाद में (कैश का उपयोग करके):

// Caching the user data for 60 minutes
$users = Cache::remember('users', 60, function () {
    return User::all();
});

मुख्य उपाय: अनावश्यक डेटाबेस प्रश्नों को कम करने के लिए लारवेल के कैशिंग सिस्टम (रेडिस, मेम्केच्ड) का उपयोग करें।


3. डेटाबेस क्वेरीज़ को अनुकूलित करें

समस्या: अकुशल प्रश्न और उचित अनुक्रमण की कमी प्रदर्शन को काफी हद तक कम कर सकती है।

अनुकूलन: अक्सर पूछे जाने वाले कॉलम में हमेशा इंडेक्स जोड़ें, और केवल आवश्यक डेटा का उपयोग करें।

पहले:

// Fetching all columns (bad practice)
$orders = Order::all();

बाद में:

// Only fetching necessary columns and applying conditions
$orders = Order::select('id', 'status', 'created_at')
    ->where('status', 'shipped')
    ->get();

मुख्य उपाय: हमेशा उन कॉलमों को निर्दिष्ट करें जिनकी आपको आवश्यकता है और सुनिश्चित करें कि आपके डेटाबेस में बार-बार पूछे जाने वाले फ़ील्ड पर उचित अनुक्रमण है।


4. मिडलवेयर का उपयोग कम से कम करें

समस्या: हर रूट पर वैश्विक स्तर पर मिडलवेयर लागू करने से अनावश्यक ओवरहेड जुड़ सकता है।

अनुकूलन: केवल जहां आवश्यक हो वहां चुनिंदा रूप से मिडलवेयर लागू करें।

पहले (वैश्विक मिडलवेयर उपयोग):

// Applying middleware to all routes
Route::middleware('logRouteAccess')->group(function () {
    Route::get('/profile', 'UserProfileController@show');
    Route::get('/settings', 'UserSettingsController@index');
});

बाद में (चयनात्मक मिडलवेयर उपयोग):

// Apply middleware only to specific routes
Route::get('/profile', 'UserProfileController@show')->middleware('logRouteAccess');

मुख्य उपाय: प्रदर्शन हिट से बचने के लिए मिडलवेयर केवल वहीं लागू किया जाना चाहिए जहां आवश्यक हो।


5. बड़े डेटासेट के लिए पेजिनेशन अनुकूलित करें

समस्या: बड़े डेटासेट को एक साथ लाने और प्रदर्शित करने के परिणामस्वरूप उच्च मेमोरी उपयोग और धीमी प्रतिक्रिया हो सकती है।

अनुकूलन: प्रति अनुरोध प्राप्त रिकॉर्ड की संख्या को सीमित करने के लिए पेगिनेशन का उपयोग करें।

पहले (सभी रिकॉर्ड लाये जा रहे हैं):

// Fetching all users (potentially too much data)
$users = User::all();

बाद में (पेजिनेशन का उपयोग करके):

// Fetching users in chunks of 10 records per page
$users = User::paginate(10);

मुख्य उपाय: डेटाबेस को भारी पड़ने से बचाने और मेमोरी उपयोग को कम करने के लिए बड़े डेटासेट को पेजिनेट करें।


6. लंबे समय से चल रहे कार्यों को कतारबद्ध करें

समस्या: ईमेल भेजने या रिपोर्ट तैयार करने जैसे लंबे समय तक चलने वाले कार्य अनुरोध-प्रतिक्रिया समय को धीमा कर देते हैं।

अनुकूलन: कार्यों को ऑफलोड करने और उन्हें पृष्ठभूमि में अतुल्यकालिक रूप से संभालने के लिए क्यूज़ का उपयोग करें।

पहले (तुल्यकालिक कार्य):

// Sending email directly (slows down response)
Mail::to($user->email)->send(new OrderShipped($order));

बाद में (पंक्तिबद्ध कार्य):

// Queuing the email for background processing
Mail::to($user->email)->queue(new OrderShipped($order));

मुख्य उपाय: प्रतिक्रिया समय में सुधार के लिए उन कार्यों के लिए कतारों का उपयोग करें जो समय के प्रति संवेदनशील नहीं हैं।


7. रूट, कॉन्फ़िगरेशन और व्यू कैशिंग का उपयोग करें

समस्या: रूट, कॉन्फ़िगरेशन या व्यू को कैशिंग न करने से प्रदर्शन धीमा हो सकता है, खासकर उत्पादन परिवेश में।

अनुकूलन: उत्पादन में तेज़ प्रदर्शन के लिए कैश रूट, कॉन्फ़िगरेशन फ़ाइलें और दृश्य।

उदाहरण आदेश:

# Cache routes
php artisan route:cache

# Cache configuration files
php artisan config:cache

# Cache compiled views
php artisan view:cache

मुख्य उपाय: तेज एप्लिकेशन प्रदर्शन के लिए उत्पादन में हमेशा अपने कॉन्फ़िगरेशन, रूट और दृश्यों को कैश करें।


8. कोड साफ़ करने के लिए कॉम्पैक्ट() का उपयोग करें

समस्या: व्यू में कई वेरिएबल को मैन्युअल रूप से पास करने के परिणामस्वरूप कोड में गड़बड़ी और प्रबंधन में कठिनाई हो सकती है।

अनुकूलन: एक दृश्य में एकाधिक चर पारित करने की प्रक्रिया को सरल बनाने के लिए कॉम्पैक्ट() का उपयोग करें।

पहले:

return view('profile', [
    'user' => $user,
    'posts' => $posts,
    'comments' => $comments,
]);

बाद में:

return view('profile', compact('user', 'posts', 'comments'));

मुख्य उपाय: कॉम्पैक्ट() का उपयोग करने से आपका कोड अधिक संक्षिप्त और बनाए रखने में आसान हो जाता है।


9. सत्र और कैश संग्रहण के लिए Redis या Memcached का उपयोग करें

समस्या: फ़ाइल सिस्टम में सत्र और कैश डेटा संग्रहीत करना उच्च-ट्रैफ़िक वातावरण में आपके एप्लिकेशन को धीमा कर देता है।

ऑप्टिमाइज़ेशन: बेहतर प्रदर्शन के लिए Redis या Memcached जैसे तेज़ इन-मेमोरी स्टोरेज समाधान का उपयोग करें।

रेडिस के लिए उदाहरण कॉन्फ़िगरेशन:

// In config/cache.php
'default' => env('CACHE_DRIVER', 'redis'),

// In config/session.php
'driver' => env('SESSION_DRIVER', 'redis'),

मुख्य उपाय: उत्पादन में सत्रों और कैशिंग के लिए फ़ाइल ड्राइवर का उपयोग करने से बचें, विशेष रूप से उच्च-ट्रैफ़िक अनुप्रयोगों में।


10. जब तक आवश्यक न हो, कच्ची क्वेरीज़ का उपयोग करने से बचें

समस्या: कच्ची SQL क्वेरी का उपयोग करने से आपका कोड कम पढ़ने योग्य और बनाए रखने में कठिन हो सकता है।

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

पहले (कच्ची क्वेरी):

// Using raw query directly
$users = DB::select('SELECT * FROM users WHERE status = ?', ['active']);

इसके बाद (एलोक्वेंट या क्वेरी बिल्डर का उपयोग करके):

// Using Eloquent ORM for better readability and maintainability
$users = User::where('status', 'active')->get();

मुख्य उपाय: जब तक अत्यंत आवश्यक न हो, अपरिष्कृत प्रश्नों के स्थान पर वाक्पटु ओआरएम को प्राथमिकता दें।


11. कुशल लॉगिंग स्तरों का उपयोग करें

समस्या: हर समय सब कुछ लॉग करने से प्रदर्शन में गिरावट हो सकती है और आपका भंडारण भर सकता है।

अनुकूलन: केवल वही कैप्चर करने के लिए उत्पादन में उचित लॉग स्तर सेट करें जो आवश्यक है (उदाहरण के लिए, त्रुटियां और महत्वपूर्ण संदेश)।

उदाहरण:

// In .env file, set log level to 'error' in production
LOG_LEVEL=error

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


अंतिम विचार

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

मुझे बताएं कि आप क्या सोचते हैं, या लारवेल अनुप्रयोगों को अनुकूलित करने के लिए बेझिझक अपनी युक्तियां और तरकीबें साझा करें!

हैप्पी कोडिंग! ?

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/harish_kumars_9c58df6fcc/10-tips-for-code-optimization-and-performance-improvement-in-laravel-1e99?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 पर संपर्क करें इसे हटाने के लिए .com
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3