জেএসএফকে সার্ভারের পাশের UI উপাদানগুলির অবস্থা সংরক্ষণ করার দরকার নেই কেন?
কারণ এইচটিটিপি রাষ্ট্রবিহীন এবং জেএসএফ রাষ্ট্রীয়। জেএসএফ উপাদান উপাদান গতিশীল (প্রোগ্রাম্যাটিক) পরিবর্তনের সাপেক্ষে। ফর্মটি যখন এন্ডুয়েসারকে প্রদর্শিত হয়েছিল তখন জেএসএফকে ঠিক তার সঠিক অবস্থাটি জানতে হবে, যাতে ফর্মটি ফেরত জমা দেওয়ার পরে মূল জেএসএফ উপাদান উপাদান দ্বারা সরবরাহ করা তথ্যের উপর ভিত্তি করে পুরো জেএসএফ জীবনচক্রটি সফলভাবে প্রক্রিয়া করতে পারে can সার্ভার. উপাদান গাছ অনুরোধের প্যারামিটারের নাম, প্রয়োজনীয় রূপান্তরকারী / বৈধকারক, সীমাবদ্ধ পরিচালিত শিমের বৈশিষ্ট্য এবং ক্রিয়া পদ্ধতি সম্পর্কে তথ্য সরবরাহ করে।
জেএসএফ কখন কোন পর্যায়ে সার্ভারের পাশের ইউআই উপাদানগুলির অবস্থা সংরক্ষণ করে এবং ঠিক কখন ইউআই উপাদানটির রাষ্ট্রীয় তথ্য সার্ভারের স্মৃতি থেকে সরানো হয়?
এই দুটি প্রশ্ন একইভাবে ফুটে উঠছে বলে মনে হচ্ছে। যাইহোক, এটি বাস্তবায়ন নির্দিষ্ট এবং এটি সার্ভার বা ক্লায়েন্টে রাজ্য সংরক্ষণ করা আছে কিনা তার উপরও নির্ভরশীল। কিছুটা শালীন বাস্তবায়ন এটিকে সরিয়ে ফেলবে যখন এটির মেয়াদ শেষ হয়ে গেছে বা কাতার পূর্ণ হবে। উদাহরণস্বরূপ মোজারার 15 টি লজিক্যাল ভিউয়ের একটি ডিফল্ট সীমা রয়েছে যখন রাষ্ট্রীয় সংরক্ষণটি সেশনে সেট করা থাকে। এটি নিম্নলিখিত প্রসঙ্গের প্যারামের সাথে কনফিগারযোগ্য web.xml
:
<context-param>
<param-name>com.sun.faces.numberOfLogicalViews</param-name>
<param-value>15</param-value>
</context-param>
আরও দেখুন Mojarra প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী অন্যান্য Mojarra-নির্দিষ্ট প্যারাম এবং এই সংশ্লিষ্ট উত্তরের জন্য com.sun.faces.numberOfViewsInSession com.sun.faces.numberOfLogicalViews বনাম
অ্যাপ্লিকেশনটিতে লগ-ইন করা ব্যবহারকারী যেমন পৃষ্ঠাগুলি নেভিগেট করে, উপাদানগুলির অবস্থা কি সার্ভারে জমা হতে থাকবে?
প্রযুক্তিগতভাবে, এটি বাস্তবায়নের উপর নির্ভর করে। আপনি যদি পৃষ্ঠা-থেকে-পৃষ্ঠা নেভিগেশন (কেবলমাত্র জিইটি অনুরোধ) সম্পর্কে কথা বলছেন তবে মোজাররা সেশনে কোনও কিছুই সংরক্ষণ করবে না। তবে সেগুলি যদি পোষ্ট অনুরোধ হয় (কমান্ডলিঙ্ক / বোতাম সহ ফর্ম), তবে মোজারা সীমাতে প্রতিটি ফর্মের সর্বাধিক সীমা পর্যন্ত সংরক্ষণ করবে। এটি একই সেশনে বিভিন্ন ব্রাউজারের ট্যাবগুলিতে একাধিক ফর্মগুলি খুলতে সক্ষম করে u
অথবা, যখন রাষ্ট্রীয় সঞ্চয় ক্লায়েন্টে সেট করা থাকে, তখন জেএসএফ সেশনে কোনও কিছুই সঞ্চয় করবে না। আপনি নিম্নলিখিত প্রসঙ্গের পরম দ্বারা এটি করতে পারেন web.xml
:
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
এরপরে javax.faces.ViewState
এটি ফর্মের নামের সাথে একটি লুকানো ইনপুট ক্ষেত্রে একটি এনক্রিপ্ট করা স্ট্রিংয়ে সিরিয়ালযুক্ত করা হবে ।
ইউআই উপাদানগুলির স্থিতি সার্ভারের পাশে রাখার সুবিধা কী তা আমি বুঝতে পারি না। ম্যানেজ করা মটরশুটিগুলিতে সরাসরি বৈধতা / রূপান্তরিত ডেটা পাস করা কি যথেষ্ট নয়? আমি কি এড়াতে চেষ্টা করব?
এটি জেএসএফের অখণ্ডতা এবং দৃust়তা নিশ্চিত করার জন্য যথেষ্ট নয়। জেএসএফ নিয়ন্ত্রণের একক প্রবেশ পয়েন্ট সহ একটি গতিশীল কাঠামো। রাজ্য পরিচালনা ব্যতীত, জেএসএফকে বিভিন্ন-এবং সম্ভাব্য ঝুঁকিপূর্ণ-কাজ করতে দেওয়ার জন্য disabled
, কোনও নির্দিষ্ট উপায়ে (উদাহরণস্বরূপ ম্যানিপুলেটিং , readonly
এবং rendered
বৈশিষ্ট্যগুলি) এইচটিটিপি অনুরোধগুলিকে ফাঁকি দেওয়া / হ্যাক করতে সক্ষম হবে । এটি এমনকি সিএসআরএফ আক্রমণ এবং ফিশিংয়ের ঝুঁকিপূর্ণ হতে পারে।
এবং সার্ভার সাইডে এটি কি খুব বেশি স্মৃতি গ্রহন করবে না, যদি হাজার হাজার একসাথে ব্যবহারকারীর সেশন থাকে? আমার একটি অ্যাপ্লিকেশন রয়েছে যেখানে ব্যবহারকারীরা নির্দিষ্ট বিষয়ে ব্লগ পোস্ট করতে পারেন। এই ব্লগগুলি আকারে বেশ বড়। যখন কোনও পোস্ট ফিরে আসবে বা ব্লগগুলি দেখার জন্য অনুরোধ জানাবে তখন বড় ব্লগগুলি উপাদানগুলির রাজ্যের অংশ হিসাবে সংরক্ষণ করা হবে। এটি খুব বেশি স্মৃতি গ্রাস করবে। এটা কি উদ্বেগ নয়?
স্মৃতি বিশেষভাবে সস্তা। কেবলমাত্র অ্যাপসভারটিকে যথেষ্ট মেমরি দিন। অথবা যদি নেটওয়ার্ক ব্যান্ডউইথ আপনার কাছে সস্তা হয় তবে কেবল ক্লায়েন্টের দিকে স্টেট সাভিং স্যুইচ করুন। সেরা ম্যাচটি সন্ধান করতে, কেবলমাত্র চাপযুক্ত এবং আপনার ওয়েবপ্যাপটি প্রত্যাশিত সর্বাধিক পরিমাণ সহবর্তী ব্যবহারকারীদের সাথে প্রোফাইল করুন এবং তারপরে সর্বাধিক পরিমাপক মেমরির 125% ~ 150% এপসভারটি দিন।
নোট করুন যে জেএসএফ ২.০ রাষ্ট্র পরিচালনায় অনেক উন্নতি করেছে। এটা তোলে আংশিক রাষ্ট্র রক্ষা করা সম্ভব (উদাহরণ শুধুমাত্র<h:form>
থেকে পুরো কাপড় বদলে সংরক্ষণ করা হবে <html>
সব শেষ উপায়)। উদাহরণস্বরূপ মোজাররা তা করে। 10 ইনপুট ক্ষেত্রগুলির সাথে একটি গড় ফর্ম (প্রতিটি লেবেল এবং বার্তা সহ) এবং 2 টি বোতাম 1KB এর বেশি লাগে না। সেশনে 15 টি দর্শন সহ, প্রতি সেশনে 15 কেবি এর বেশি হওয়া উচিত নয়। ~ 1000 সমবর্তী ব্যবহারকারী সেশনগুলির সাথে, এটি 15MB এর চেয়ে বেশি হওয়া উচিত নয়।
আপনার উদ্বেগটি অধিবেশন বা অ্যাপ্লিকেশন স্কোপে আসল অবজেক্টগুলিতে (পরিচালিত মটরশুটি এবং / অথবা এমনকি ডিবি সত্তা) আরও বেশি কেন্দ্রীভূত হওয়া উচিত। আমি প্রচুর কোড এবং প্রকল্প দেখেছি যা অগত্যা জাভর স্মৃতিতে পুরো ডাটাবেস টেবিলটিকে একটি সেশন স্কোপড শিমের স্বাদে নকল করে তোলে যেখানে এসকিউএল এর পরিবর্তে জাভা ব্যবহার করা হয় রেকর্ডার / গোষ্ঠী / রেকর্ডের জন্য। ~ 1000 রেকর্ড সহ, এটি সহজেই প্রতি ব্যবহারকারী সেশনে 10 এমবি ছাড়িয়ে যায় ।