এই সমস্যাটি এখনও ম্যাজেন্টো ২.০.০ স্থিতিতে পুনরুত্পাদনযোগ্য।
ম্যাজেন্টো 2 ব্যতিক্রমী হ্যান্ডলিংয়ে একটি বৈশিষ্ট্য রয়েছে, যা অন্যান্য সমস্ত ব্লক এখনও রেন্ডার করা অবস্থায় ভাঙা ব্লকগুলির রেন্ডারিংকে বাধা দেয়। বিকাশকারী মোডে এটি অক্ষম করা আছে এবং সমস্ত ব্যতিক্রম সরাসরি ব্রাউজারে প্রদর্শিত হয়। ডিফল্ট এবং উত্পাদন মোডগুলিতে, যদি ব্লক রেন্ডারিংয়ের সময় ব্যতিক্রম ঘটে, তবে ব্লকটি কেবল আউটপুট থেকে সরিয়ে ফেলা হবে (সংশ্লিষ্ট ব্যতিক্রমটি এখনও var / লগ / সিস্টেম.লগে লগ হয় )। দেখুন \Magento\Framework\View\Layout::renderNonCachedElement()
।
পণ্য পৃষ্ঠায় চেকআউট ব্লক রেন্ডারিং সময় অনুসরণ ব্যতিক্রম ঘটে এবং এই কারণে এই ব্লক হারিয়েছে: main.CRITICAL: No such entity with customerId = [] []
।
এই ব্যতিক্রমটির কারণ হ'ল সেশন স্টোরেজে থাকা customerLoggedIn == true
গ্রাহকের ডেটা \Magento\PageCache\Model\Layout\DepersonalizePlugin::afterGenerateXml()
কার্যকর হওয়ার পরে বেমানান অবস্থায় রয়েছে ( এবং গ্রাহকের ডেটা অনুপস্থিত) । এই প্লাগইনটি বর্তমান পিএইচপি সেশনটি বন্ধ করে এবং এভাবে গ্রাহকের ডেটা সেশন স্টোরেজ থেকে সরিয়ে দেয়। এটি কেবল তখনই ঘটে যখন পৃষ্ঠাটি সম্পূর্ণরূপে ক্যাশেযোগ্য হয় (এবং এটি আসলে হয়)।
পৃষ্ঠাটিকে কেবল ক্যাশে মডিউল দ্বারা ক্যাশেযোগ্য বিবেচনা করা হবে যদি এর বিন্যাসে ব্লক না থাকে cacheable="false"
। এই বৈশিষ্ট্যটি যুক্ত করা এই ব্লকটি অ্যাজাক্স দ্বারা বোঝা তৈরি করবে না (প্রশ্নে অনুমান হিসাবে)। অ্যাজাক্স দ্বারা কিছু ব্লক লোড করার জন্য, এই ব্লকটি এমন সম্পত্তি হিসাবে ঘোষণা করা উচিত ছিল _isScopePrivate
যা সেট করা আছে true
, তদ্ব্যতীত, cacheable="false"
পৃষ্ঠায় কোনও ব্লক নেই । দেখুন \Magento\PageCache\Observer\ProcessLayoutRenderElement::execute()
এবং mage.pageCache._replacePlaceholder()
মধ্যে Magento / PageCache / দৃশ্য / ফ্রন্টএন্ড / ওয়েব / JS / পৃষ্ঠা-cache.js । পৃষ্ঠা ক্যাশে মডিউল রিডমে উচ্চ স্তরের ডক্সও পরীক্ষা করে দেখুন
cacheable="false"
চেকআউট ব্লকের জন্য সেট করা থেকে পণ্য পৃষ্ঠাটি ক্যাশেযোগ্য হওয়া উচিত নয় , তবে এটি পরিচিত জ্ঞানের কারণে অচিহ্নবদ্ধ ব্লকগুলি ক্যাশে হওয়ার কারণে । যতক্ষণ না এই সমস্যাটির সমাধান হয় ততক্ষণ নীচের কাজটি ব্যবহার করা যেতে পারে (কেন এটি কাজ করে তা আমাকে জিজ্ঞাসা করবেন না, এটি একটি দীর্ঘ গল্প):
- যাও
\Magento\Framework\Pricing\Render\Layout::__construct
- পরিবর্তন
['cacheable' => $generalLayout->isCacheable()]
করুন['cacheable' => false]
এটির ক্ষতি হওয়া উচিত নয় কারণ চেকআউট ব্লক যুক্ত করার পরে পণ্যের পৃষ্ঠাগুলি কোনওভাবে ক্যাশে হবে না
আরেকটি প্রশ্ন হ'ল আপনি কি বিল্ট-ইন পেজ ক্যাশে বা বার্নিশ দ্বারা পণ্য পৃষ্ঠাগুলিকে নন-ক্যাশেযোগ্য করতে চান?