আমি ওয়ার্ডপ্রেস মেমরির ব্যবহার সম্পর্কে ঘনিষ্ঠ নজর রেখেছিলাম। আমার সাইটে, মনে হয় যে প্রতিটি পৃষ্ঠার জন্য হিট 20MB র্যাম বরাদ্দ হয়ে যায়, কেবলমাত্র সমস্ত প্লাগইনগুলি চালিত হওয়ার জন্য স্বাচ্ছন্দ্যময় পরিবেশ তৈরি করতে thus
অনুকূলকরণের জন্য একক স্পট নেই, কোনও একক খারাপ লোক যিনি বেশিরভাগ স্মৃতি খায়। খরচ সমস্ত অনেক অনেক পিএইচপি মডিউল জুড়ে ছড়িয়ে পড়ে।
আমরা কীভাবে ওয়ার্ডপ্রেসকে তার পরিবেশটিকে কেবল একবার স্মৃতিতে আরম্ভ করতে পারি, এবং তারপরে প্রতিটি হিটের জন্য এটি বহুবার পুনরায় ব্যবহার করতে পারি? আমি প্রতিটি ব্যবহারকারী ক্লিকে ধীরে ধীরে পিএইচপি 20 এমবি খেতে চাই না - এমনকি প্রচুর স্মৃতিযুক্ত কোনও সার্ভারে, সমস্ত কাজ শেষ হতে কয়েক সেকেন্ড সময় লাগে। আপনার মূলত কেবল পঠনযোগ্য মেমরির খণ্ডগুলি প্রয়োজন যা পুনরায় ব্যবহার করা যেতে পারে।
এছাড়াও ... কেন 20 এমবি? কেউ কি এর মধ্যে অন্তর্দৃষ্টি দিতে পারে?
সম্পাদনা করুন: এখানে আমার ডেভলপমেন্ট মেশিনে চালিত ওয়ার্ডপ্রেসে উইনক্যাসগ্রিন্ড আউটপুট রয়েছে (শেয়ার্ড হোস্টিংয়ের চেয়ে অনেক দ্রুত)। আপনি দেখতে পাচ্ছেন, মূল পৃষ্ঠার এইচটিএমএল তৈরি করতে ক্রંચিংয়ের এক সেকেন্ড সময় লাগে। ভাগ করে নেওয়ার হোস্টিংয়ের মাধ্যমে এটি ধীর করুন এবং আপনার সমস্যার জন্য একটি রেসিপি রয়েছে। আমি বেশিরভাগ সময় নেয় এমন পদ্ধতিটি বেছে নিয়েছি। আপনি কীভাবে এটি অনুকূলিতকরণ করবেন?
সম্পাদনা করুন: এই চমত্কার ফাংশনগুলি.এইচপিপি প্রোফাইলিং সরঞ্জাম থেকে কোয়েরির পরিসংখ্যানগুলি এখানে রয়েছে ।
লোড: 12 ক্যোয়ারী - 532ms - 19.1MB - 43 ক্যাশে হিট / 53 অনুসন্ধান: 15 ক্যোয়ারী - 563ms - 19.0MB - 72 ক্যাশে হিট / 86 প্রদর্শন: 21 টি কোয়েরি - 705 মিমস - 19.2MB - 234 ক্যাশে হিট / 257
সম্পাদনা: আপনি বাইরে বেরোনোর গ্যারান্টিযুক্ত কিছু দেখতে চান? Index.php এর শেষে এই লাইনগুলি সন্নিবেশ করান:
echo "<pre>\n";
print_r(get_defined_vars());
echo "</pre>\n";
আমি বর্তমান পোস্টের বডিটি মেমরিতে কতবার সঞ্চয় করা হয়েছে তা গণনা করার চেষ্টা করেছি। আমি 20 টি উদাহরণ গণনা করেছি। তারপরে আমি বুঝতে পেরেছিলাম যে পিএইচপি-র রেফারেন্স গণনা রয়েছে, সুতরাং অনুলিপিগুলির পরিমাণ হ্রাস পেয়ে মাত্র তিনে: দুজন ডাব্লুপি_কিউয়ারিতে বলে মনে হচ্ছে, অবজেক্ট ক্যাশে একটি। আমি আরও তদন্ত করছি।
এই কারণেই আমি মনে করি ওয়ার্ডপ্রেসটির স্মৃতি সংক্রান্ত সমস্যাগুলি লক্ষ্য করে রিফ্যাক্টরিংয়ের প্রয়োজন। আপনি আর এর মেমরির খরচটিকে দোষ দিতে পারবেন না এটি যা করে তার নিছক জটিলতার জন্য। এটা শুধু কিছু একটি গুচ্ছ আছে ভুল ।
সম্পাদনা করুন: এক দিনের পরে এটি বের করার চেষ্টা করার পরে, আমার অনুসন্ধানগুলি এখানে:
1) সমস্ত মেমরির 88% আসে যা প্রয়োজন থেকে অন্তর্ভুক্ত বা অন্তর্ভুক্ত_ এক ধরণের কলগুলির অন্তর্ভুক্ত:
২) পিএইচপি ফাইলটি অন্তর্ভুক্ত বেশিরভাগ ক্ষেত্রে একটি অনুরোধ পরিবেশন করার প্রথম অংশের সময় ঘটে থাকে (আশ্চর্যজনকভাবে নয়), এটি সেই জায়গায় যেখানে সমস্ত স্মৃতি হারিয়ে যায়:
3) এটি একটি অনুরোধ করার সময় কার্যকর করা হচ্ছে যে সমস্ত ফাংশন প্লট করা বেশ আকর্ষণীয়। মোট 12000 টিরও বেশি কল রয়েছে। এটিকে আরও দৃশ্যমান করার জন্য আমি তাদের ঘাটাঘাটি করেছি (স্তরের অক্ষটি মূলত স্ট্যাকের গভীরতা):
4) আমি ভাবতে পারি যে একমাত্র উপায় হ'ল অন্তর্ভুক্ত। Php ফাইলের পরিমাণ হ্রাস করা। যদি তারা যে ফাইলটি থেকে আসে সেগুলির জন্য আমি যদি ফাংশনগুলি বিভক্ত করি তবে আপনি দেখতে পাচ্ছেন যে অনেকগুলি ফাইল সর্বাধিক একবার বা দু'বার হিট হয়। আমাদের যখন প্রয়োজন হয় না তখন সেগুলি কীভাবে এড়াতে হয় তার একটি উপায় আমাদের প্রয়োজন। উদাহরণস্বরূপ, আমার দূরবর্তী ডাটাবেস ব্যাকআপ প্লাগইনটি লোড এবং নিবন্ধিত হয়ে যায়, কেবল কখনই ব্যবহার করা যায় না। উপরের প্লটটি ফাইলের নামে বিভক্ত:
আমি আমার সমস্ত খ্যাতি মূল্যবান একটি অফার দিচ্ছি :) রিফ্যাক্টরিংগুলির জন্য যা আমার ব্লগের মেমরির পদচিহ্নগুলিকে 30% বা তারও বেশি কাটতে পারে।
সম্পাদনা করুন: আমি WP 3.1 ইনস্টল করেছি, এখানে পুরানো সংস্করণটির সাথে তুলনা করা হচ্ছে।
নীল ডাব্লুপিপি 3.1, লাল হয় 3.0.4। নতুন ডাব্লুপি দ্রুততর, তবে আরও স্মৃতিও খায়।
এখানে অন্তর্ভুক্ত ফাইল দ্বারা একটি তালিকা আছে।
এটি আমাকে উপলব্ধ করতে দেয় যে "অল ইন ওয়ান এসইও প্যাক" কতটা মেমরি খায় - একটি অ্যাভিনিউ হ'ল আমি যা চাই তা পাওয়ার জন্য প্লাগইনটির কার্যকারিতার কেবল একটি ভগ্নাংশই ব্যবহার করা উচিত। এছাড়াও, আমার নিজের প্লাগইনগুলি বেশ খারাপ বলে মনে হচ্ছে।
আমি উদাহরণস্বরূপ কমেন্ট.এফপি (আমি আমার ব্লগে মন্তব্যগুলি অস্বীকার করি না) এবং আরও বেশ কয়েকটিতে শর্তযুক্ত লোড করার চেষ্টা করতে চাই। আমি সমস্ত অবচয় কোড মুছে ফেলেছি। আমি চাহিদা অনুযায়ী এর গ্লোবাল টেবিলগুলি লোড করতে আমি kses.php ডাউন ছাঁটাই করেছি। আমি l10n সরলীকরণ করেছি (আমি কোনও স্থানীয়করণ করি না), এর ক্রিয়াকলাপগুলি তাত্ক্ষণিকভাবে স্ট্রিংগুলি প্রদর্শন ছাড়াই ফিরিয়ে দেয়। আমি নির্বিচারে সেট আপ করা 30% চিহ্ন থেকে এখনও দূরে।
সম্পাদনা করুন: আমি ডিফল্ট সেটিংস (অপকোড ক্যাশে 32MB) সহ এপিসি ডাউনলোড এবং সক্ষম করেছিলাম। এই তুলনা এখানে:
আপনি দেখতে পাচ্ছেন যে কোড লোডিং ব্যাপকভাবে ত্বরান্বিত হয়েছে, এবং কোডটি মেমোরিতেও কম স্থান নেয় (সম্ভবত আমরা কেবল ওপকোডের সাথে কাজ করি, মূল উত্স নয়)। মেমরির খরচ এখনও বেশ বেশি।