একক পৃষ্ঠা অ্যাপ্লিকেশন: সুবিধা এবং অসুবিধা [বন্ধ]


203

আমি এসপিএ সম্পর্কে পড়েছি এবং এর সুবিধাগুলি। আমি তাদের বেশিরভাগই আপোষহীন বলে মনে করি। 3 টি সুবিধা রয়েছে যা আমার সন্দেহ জাগায়।

প্রশ্ন: আপনি কি এসপিএর আইনজীবী হিসাবে কাজ করতে পারবেন এবং প্রমাণ করতে পারবেন যে আমি প্রথম তিনটি বক্তব্য সম্পর্কে ভুল?

                              === ADVANTAGES ===

1. এসপিএ অত্যন্ত প্রতিক্রিয়াশীল সাইটগুলির জন্য অত্যন্ত ভাল:

সমস্ত মধ্যবর্তী রাজ্যের জন্য সার্ভার-সাইড রেন্ডারিং কার্যকর করা কঠিন - ছোট দর্শন রাষ্ট্রগুলি ইউআরএলগুলিতে ভাল মানচিত্র করে না।

একক পৃষ্ঠাগুলির অ্যাপ্লিকেশনগুলিকে এইচটিএমএল পুনরুদ্ধার করার জন্য কোনও সার্ভার রাউন্ডট্রিপের প্রয়োজন ছাড়াই UI এর কোনও অংশ পুনরায় আঁকার দক্ষতার দ্বারা পৃথক করা হয়। এটি এমন একটি মডেল স্তর রয়েছে যা ডেটা পরিচালনা করে এবং একটি ভিউ স্তর যা মডেলগুলি থেকে পড়ে having

নন-এসপিএর জন্য একটি মডেল স্তর রাখা কী ভুল? এসপিএ কি ক্লায়েন্টের পক্ষে এমভিসি সহ একমাত্র সামঞ্জস্যপূর্ণ আর্কিটেকচার?

২. এসপিএ সহ আমাদের পৃষ্ঠাগুলি ডাউনলোড করতে সার্ভারে অতিরিক্ত কোয়েরি ব্যবহার করার দরকার নেই।

হাহ, এবং ব্যবহারকারীরা আপনার সাইটে দেখার সময় কয়টি পৃষ্ঠা ডাউনলোড করতে পারে? দুই তিন? পরিবর্তে অন্য সুরক্ষা সমস্যা দেখা দেয় এবং আপনার লগইন পৃষ্ঠা, অ্যাডমিন পৃষ্ঠা ইত্যাদি পৃথক পৃষ্ঠাগুলিতে আলাদা করতে হবে। পরিবর্তে এটি এসপিএ আর্কিটেকচারের সাথে বিরোধ করে।

3.আর অন্য কোন সুবিধা হতে পারে? অন্য কারও সম্পর্কে শুনবেন না ..

                            === DISADVANTAGES ===
  1. ক্লায়েন্ট অবশ্যই জাভাস্ক্রিপ্ট সক্ষম করতে হবে।
  2. সাইটে কেবল একটি প্রবেশের পয়েন্ট।
  3. নিরাপত্তা।

PS আমি এসপিএ এবং নন-এসপিএ প্রকল্পগুলিতে কাজ করেছি। এবং আমি এই প্রশ্নগুলি জিজ্ঞাসা করছি কারণ আমার বুঝতে আমার বোধকে আরও গভীর করা দরকার। এসপিএ সমর্থকদের ক্ষতি করার কোনও উপায় নেই। এসপিএ সম্পর্কে আমাকে আরও কিছু পড়তে বলবেন না। আমি এই সম্পর্কে আপনার মতামত শুনতে চাই।


1
২ এবং ৩. ইস্যু নয়।
উইক্টর জাচলা

1
আমি পরামর্শ দিচ্ছি যে কেবল এসপিএগুলি পড়ার পরিবর্তে, আপনি এক্সটজের মতো একটি বাস্তব কাঠামোর সাথে খেলতে কিছুটা সময় ব্যয় করতে পারেন। সেখানে সাঁতারের সময়টি বন্ধ হয়ে যাবে এবং আপনি নিজের প্রশ্নের উত্তর দিতে সক্ষম হবেন।
উইক্টর জ্যাচলা

3
@ উইক্টরজ্যাচলা আমি একটি এসপিএ প্রকল্পে কাজ করি। আমি JQuery + ব্যাকবোন ব্যবহার করি। আমি জেএসপি সাইটও লিখেছি। আমি এই প্রশ্নের উত্তর দিতে পারি না। পারবে তুমি?
ভিবি_

3
@ ভোলডিমিরবাখমতিয়ুক: এতে কোন সমস্যা নেই, ব্যবহারকারী কী আপোস করতে পারেন তা হ'ল গুই ডেটা নয় কারণ ডেটা সার্ভারের দিকে রক্ষিত রয়েছে।
উইক্টর জাচলা 21

4
এই প্রশ্নটি যদি মতামত ভিত্তিক হয়? আমি প্রায়শই ভাবতাম যে কখন এবং কখন এসপিএ লিখব? এটি সহায়ক হবে যদি এসও প্রফেসর এন কনস প্রশ্নেরও অনুমতি দেয়
অনুরাগ અવস্তি

উত্তর:


144

আসুন সর্বাধিক জনপ্রিয় এসপিএ সাইট, জিমেইল দেখুন।

1. এসপিএ অত্যন্ত প্রতিক্রিয়াশীল সাইটগুলির জন্য অত্যন্ত ভাল:

সার্ভার-সাইড রেন্ডারিং এতটা কঠিন নয় যতটা সহজ কৌশলগুলি যেমন ইউআরএলতে একটি # হ্যাশ রাখার জন্য, বা খুব সম্প্রতি এইচটিএমএল 5 এরpushState সাথে ব্যবহার করা হত । এই পদ্ধতির সাথে ওয়েব অ্যাপ্লিকেশনটির সঠিক অবস্থা পৃষ্ঠা URL- এ এম্বেড করা আছে। জিমেইলে যেমন প্রতিবার আপনি কোনও মেল খোলেন তখন ইউআরএলে একটি বিশেষ হ্যাশ ট্যাগ যুক্ত করা হয়। যদি অনুলিপি করা হয় এবং অন্য ব্রাউজার উইন্ডোতে আটকানো হয় তবে ঠিক একই মেলটি খুলতে পারে (তারা প্রমাণ করতে পারে) এই পদ্ধতির সরাসরি আরও বেশি traditionalতিহ্যবাহী ক্যোয়ারী স্ট্রিংয়ের মানচিত্র রয়েছে, পার্থক্য কেবলমাত্র সম্পাদনের ক্ষেত্রে। এইচটিএমএল 5 পুসস্টেট () এর সাহায্যে আপনি #hashসম্পূর্ণ ক্লাসিক ইউআরএলগুলি মুছে ফেলতে পারেন এবং যা প্রথম অনুরোধে সার্ভারে সমাধান করতে পারে এবং তারপরে অনুরোধে অ্যাজাক্সের মাধ্যমে লোড করতে পারে।

২. এসপিএ সহ আমাদের পৃষ্ঠাগুলি ডাউনলোড করতে সার্ভারে অতিরিক্ত কোয়েরি ব্যবহার করার দরকার নেই।

আমার ওয়েবসাইটে ভিজিট চলাকালীন কতগুলি পৃষ্ঠাগুলি ডাউনলোড হয়েছে ?? যখন সে তার / তার মেইল ​​অ্যাকাউন্ট খুলবে তখন কতগুলি মেল পড়ে। আমি 50> একবারে পড়েছি। এখন মেইলগুলির কাঠামো প্রায় একই রকম। যদি আপনি কোনও সার্ভার সাইড রেন্ডারিং স্কিম ব্যবহার করেন তবে সার্ভারটি প্রতিটি অনুরোধে এটি সরবরাহ করবে (সাধারণ ক্ষেত্রে)। - সুরক্ষা উদ্বেগ - আপনার / আপনার প্রশাসনের জন্য পৃথক পৃষ্ঠাগুলি রাখা উচিত নয় / লগইন যা সম্পূর্ণরূপে আপনার সাইটের কাঠামোর উপর নির্ভর করে paytm.com গ্রহণ করুন উদাহরণস্বরূপ কোনও ওয়েব সাইট এসপিএ তৈরি করার অর্থ এই নয় যে আপনি সমস্ত প্রান্তের জন্য সমস্ত প্রান্ত খোলে ব্যবহারকারীরা বলতে চাইছি আমি আমার স্পা ওয়েবসাইটটির সাথে ফর্ম লেখক ব্যবহার করি। - সম্ভবত সর্বাধিক ব্যবহৃত এসপিএ কাঠামোতে কৌণিক জেএস দেব ওয়েব সাইট থেকে পুরো এইচটিএমএল মন্দিরটি লোড করতে পারে যাতে ব্যবহারকারীদের প্রমাণীকরণের স্তরের উপর নির্ভর করে এটি করা যায়। সমস্ত লেখক প্রকারের জন্য এইচটিএমএল প্রাক লোড করা হয় না '

৩. অন্য কোনও সুবিধা হতে পারে? অন্য কারও সম্পর্কে শুনবেন না ..

  • এই দিনগুলিতে আপনি নিরাপদে ধরে নিতে পারেন ক্লায়েন্টের জাভাস্ক্রিপ্ট সক্ষম ব্রাউজারগুলি থাকবে।
  • সাইটের শুধুমাত্র একটি প্রবেশ পয়েন্ট। যেমনটি আমি পূর্বে উল্লেখ করেছি রাজ্যের রক্ষণাবেক্ষণ আপনার ইচ্ছামত যে কোনও সংখ্যক এন্ট্রি পয়েন্ট থাকতে পারে তবে নিশ্চিতভাবে আপনার একটি হওয়া উচিত।
  • এমনকি কোনও এসপিএ ব্যবহারকারীর মধ্যে কেবল তার উপযুক্ত অধিকার রয়েছে তা দেখুন to আপনাকে একবারে প্রতিটি জিনিস ইনজেক্ট করতে হবে না। ডিফল্ট এইচটিএমএল টেম্পলেট এবং জাভাস্ক্রিপ্ট অ্যাসিঙ্ক লোড করাও এসপিএর একটি বৈধ অংশ।

আমি যে সুবিধাগুলি ভাবতে পারি সেগুলি হ'ল:

  1. এইচটিএমএল রেন্ডারিং স্পষ্টত কিছু সংস্থান গ্রহণ করে এখন আপনার সাইটের ভিজিট প্রতিটি ব্যবহারকারী এটি করছে। এছাড়াও প্রধান লজিকগুলি কেবল রেন্ডারিংই নয় সার্ভার সাইডের পরিবর্তে ক্লায়েন্ট সাইডটি করা হয়।
  2. তারিখের সময়ের সমস্যা - আমি কেবলমাত্র ক্লায়েন্টকে ইউটিসি সময় দিচ্ছি একটি পূর্ব সেট বিন্যাস এবং জাভাস্ক্রিপ্টটি যে হ্যান্ডেলটি আমি পরিচালনা করতে দিচ্ছি তার সময় অঞ্চলগুলি সম্পর্কেও চিন্তা করি না। এটি ব্যবহারকারীদের আইপি থেকে প্রাপ্ত অবস্থানের ভিত্তিতে সময় অঞ্চলগুলি অনুমান করতে হয়েছিল যেখানে এটি দুর্দান্ত সুবিধা।
  3. আমার কাছে রাষ্ট্র আরও স্পষ্টভাবে একটি এসপিএতে রক্ষণাবেক্ষণ করা হয় কারণ আপনি একবার ভেরিয়েবল সেট করে নিলে আপনি জানেন যে এটি সেখানে থাকবে। এটি ওয়েব পৃষ্ঠার চেয়ে অ্যাপ্লিকেশন বিকাশের অনুভূতি দেয়। এটি সাধারণত খাদ্যপান্ডা, ফ্লিপকার্ট, অ্যামাজনের মতো সাইটগুলি তৈরিতে অনেক সহায়তা করে। কারণ আপনি যদি ক্লায়েন্ট সাইড স্টেট না ব্যবহার করেন তবে আপনি ব্যয়বহুল সেশন ব্যবহার করছেন।
  4. ওয়েবসাইটগুলি অবশ্যই চূড়ান্ত প্রতিক্রিয়াশীল - আমি একটি নন এসপিএ ওয়েবসাইটে ক্যালকুলেটর তৈরি করার চেষ্টা করার জন্য একটি চরম উদাহরণ গ্রহণ করব (আমি এর অদ্ভুত জানি)।

মন্তব্য থেকে আপডেট

সকেট এবং দীর্ঘ-ভোটদান সম্পর্কে কেউ উল্লেখ করেছেন বলে মনে হয় না। আপনি যদি অন্য ক্লায়েন্টের মোবাইল অ্যাপ থেকে লগ আউট করেন তবে আপনার ব্রাউজারটিও লগ আউট করা উচিত out যদি আপনি এসপিএ ব্যবহার না করেন তবে প্রতিবার পুনর্নির্দেশের সময় আপনাকে সকেট সংযোগটি পুনরায় তৈরি করতে হবে। বিজ্ঞপ্তি, প্রোফাইল আপডেট ইত্যাদির মতো ডেটাতে থাকা কোনও আপডেটের সাথেও এটি কাজ করা উচিত

একটি বিকল্প দৃষ্টিকোণ: আপনার ওয়েবসাইট বাদে, আপনার প্রকল্পে কোনও স্থানীয় মোবাইল অ্যাপ জড়িত হবে? যদি হ্যাঁ, আপনি সম্ভবত কোনও সার্ভার (অর্থাত্ জেএসওএন) থেকে সেই নেটিভ অ্যাপ্লিকেশনটিতে কাঁচা ডেটা খাওয়ানো এবং এটি রেন্ডার করতে ক্লায়েন্ট-সাইড প্রসেসিং করছেন, সঠিক? সুতরাং এই দৃser়তার সাথে, আপনি কেবল ক্লায়েন্ট-সাইড রেন্ডারিং মডেল করছেন। এখন প্রশ্নটি ওঠে, আপনার প্রকল্পের ওয়েবসাইট সংস্করণে কেন আপনি একই মডেলটি ব্যবহার করবেন না? নো-ব্রেইনার ধরনের। তারপরে প্রশ্নটি হয়ে যায় যে আপনি কেবল এসইও সুবিধার্থে এবং ভাগযোগ্য / বুকমার্কযোগ্য URL গুলির সুবিধার্থে সার্ভার-সাইড পৃষ্ঠাগুলি রেন্ডার করতে চান কিনা?


4
এটিকে একটি সম্প্রদায়ের উইকি উত্তর দেওয়ার জন্য আপনার পক্ষে ভাল :) এছাড়াও এগুলি দুর্দান্ত পয়েন্টগুলি
জেসন স্পারসেক

@ পারভ শর্মা আরও বিস্তৃতভাবে ব্যাখ্যা করুন কেন রাষ্ট্র বজায় রাখছেন এসপিএ-র সাথে আরও দক্ষ?
ভিবি_

4
আপনি এসপিএ সহ SEO অপ্টিমাইজেশনের জন্য পৃষ্ঠাগুলি সহজেই সূচী করতে পারবেন না।
অঙ্কিত_শাহ 55

2
@ অঙ্কিত_শাহা 55 এটি আর সত্য হতে পারে না (কমপক্ষে গুগলের পক্ষে, যিনি যাইহোক সার্চ ইঞ্জিনের বেশিরভাগ অংশীদারি শেয়ারের মালিক হন)। গুগল থেকে "আমাদের এজেএক্স ক্রলিং স্কিমটিকে হ্রাস করা" দেখুন। আমার উপলব্ধি হ'ল আপনার এসপিএর সূচীকরণের জন্য আপনাকে গুগলের পক্ষে বিশেষ কিছু করতে হবে না। আমি মনে করি আপনার অবশ্যই পুসস্টেট সমর্থন করা দরকার, কারণ আমি গুগল সূচকগুলির হ্যাশ টুকরোগুলি ভাবি না।
কেভিন হুইলার 0

3
সকেট এবং দীর্ঘ-ভোটদান সম্পর্কে কেউ উল্লেখ করেছেন বলে মনে হয় না। আপনি যদি অন্য ক্লায়েন্টের মোবাইল অ্যাপ থেকে লগ আউট করেন তবে আপনার ব্রাউজারটিও লগ আউট করা উচিত out যদি আপনি এসপিএ ব্যবহার না করেন তবে প্রতিবার পুনর্নির্দেশের সময় আপনাকে সকেট সংযোগটি পুনরায় তৈরি করতে হবে। এটি নোটিফিকেশন, প্রোফাইল আপডেট ইত্যাদির মতো ডেটাতে কোনও আপডেটের সাথেও কাজ করা উচিত
tsuz

66

আমি একজন বাস্তববাদী, তাই আমি ব্যয় এবং সুবিধার দিক থেকে এটি দেখার চেষ্টা করব।

মনে রাখবেন যে আমি যে কোনও অসুবিধা দিচ্ছি তার জন্য আমি স্বীকার করেছি যে সেগুলি সমাধানযোগ্য। এ কারণেই আমি কোনও কালো এবং সাদা হিসাবে দেখছি না, বরং ব্যয় এবং সুবিধা।

সুবিধাদি

  • রাষ্ট্রের সহজ ট্র্যাকিং - 2 পৃষ্ঠার বোঝার মধ্যে অবস্থার কথা স্মরণে রাখতে কুকিজ, ফর্ম জমা, স্থানীয় সঞ্চয়স্থান, সেশন স্টোরেজ ইত্যাদি ব্যবহার করার দরকার নেই।
  • প্রতিটি পৃষ্ঠায় থাকা বয়লার প্লেট সামগ্রী (শিরোনাম, পাদলেখ, লোগো, কপিরাইট ব্যানার, ইত্যাদি) কেবলমাত্র সাধারণ ব্রাউজার সেশনে একবার লোড হয়।
  • "পৃষ্ঠাগুলি" স্যুইচ করার ক্ষেত্রে কোনও ওভারহেড বিলম্বিতা নেই।

অসুবিধেও

  • পারফরম্যান্স মনিটরিং - হাত বাঁধা: বেশিরভাগ ব্রাউজার-স্তরের পারফরম্যান্স মনিটরিং সমাধানগুলি কেবলমাত্র পৃষ্ঠা লোড সময়গুলিতে একচেটিয়াভাবে ফোকাস করতে দেখেছি, যেমন প্রথম বাইট সময়, ডিওএম তৈরির সময়, এইচটিএমএলের জন্য নেটওয়ার্ক রাউন্ড ট্রিপ, অনলোড ইভেন্ট ইত্যাদি পৃষ্ঠা আপডেট করা হচ্ছে AJAX এর মাধ্যমে পোস্ট-লোড পরিমাপ করা হবে না। এমন কোনও সমাধান রয়েছে যা আপনাকে আপনার কোডটি সুস্পষ্ট ব্যবস্থা রেকর্ড করতে দেয়, যেমন কোনও লিঙ্কে ক্লিক করার সময়, টাইমার শুরু করতে, তারপরে AJAX ফলাফলগুলি উপস্থাপনের পরে একটি টাইমার শেষ করে এবং সেই প্রতিক্রিয়াটি প্রেরণ করে। উদাহরণস্বরূপ, নতুন রেলিক এই কার্যকারিতা সমর্থন করে। এসপিএ ব্যবহার করে আপনি নিজেকে কয়েকটি সম্ভাব্য সরঞ্জামে আবদ্ধ করেছেন।
  • সুরক্ষা / অনুপ্রবেশ পরীক্ষা - হাত বাঁধা: যখন আপনার পুরো পৃষ্ঠাটি স্পা ফ্রেমওয়ার্কের দ্বারা গতিশীলভাবে নির্মিত হয় তখন স্বয়ংক্রিয় সুরক্ষা স্ক্যানগুলির লিঙ্কগুলি আবিষ্কার করতে অসুবিধা হতে পারে। সম্ভবত এর সমাধান রয়েছে তবে আপনি নিজেকে সীমাবদ্ধ রেখেছেন।
  • বান্ডিলিং: আপনি যখন প্রাথমিক পৃষ্ঠার লোডটিতে পুরো ওয়েব সাইটের জন্য প্রয়োজনীয় সমস্ত কোড ডাউনলোড করছেন তখন কোনও পরিস্থিতিতে পড়তে সহজ, যা লো-ব্যান্ডউইথ সংযোগের জন্য ভয়াবহভাবে সঞ্চালন করতে পারে। আপনি যেতে যেতে আরও প্রাকৃতিক অংশগুলিতে লোড করার চেষ্টা করার জন্য আপনার জাভাস্ক্রিপ্ট এবং সিএসএস ফাইলগুলি বান্ডিল করতে পারেন, তবে এখন আপনাকে সেই ম্যাপিং বজায় রাখতে হবে এবং অবাস্তবহীন নির্ভরতা (কেবলমাত্র আমার সাথে ঘটেছিল) এর মাধ্যমে টানতে অযৌক্তিক ফাইলগুলি দেখার প্রয়োজন। আবার, সমাধানযোগ্য তবে ব্যয় সহ with
  • বিগ ব্যাং রিফ্যাক্টরিং: ঝুঁকি কমাতে যদি আপনি কোনও বড় স্থাপত্য পরিবর্তন করতে চান, যেমন বলুন যে, এক কাঠামো থেকে অন্য কাঠামোতে স্যুইচ করতে চান তবে বর্ধিত পরিবর্তন করা বাঞ্চনীয়। তা হল, নতুনটি ব্যবহার শুরু করুন, কিছু ভিত্তিতে মাইগ্রেট করুন, যেমন প্রতি পৃষ্ঠায়, প্রতি বৈশিষ্ট্য ইত্যাদি, Traditionalতিহ্যবাহী মাল্টি-পেজ অ্যাপ্লিকেশন সহ, আপনি একটি পৃষ্ঠ থেকে কৌণিক থেকে প্রতিক্রিয়া স্যুইচ করতে পারেন, তারপরে পরবর্তী স্প্রিন্টে অন্য পৃষ্ঠাটি স্যুইচ করতে পারেন। এসপিএ সহ, এটি সব কিছুই বা কিছুই নয়। আপনি যদি পরিবর্তন করতে চান তবে আপনাকে একবারে পুরো অ্যাপ্লিকেশনটি পরিবর্তন করতে হবে।
  • নেভিগেশনের জটিলতা: এসপিএ-তে নেভিগেশনাল প্রসঙ্গ বজায় রাখতে সহায়তা করার জন্য সরঞ্জামিং বিদ্যমান, যেমন ইতিহাস.জেএস, অ্যাঙ্গুলার 2, যার বেশিরভাগই ইউআরএল ফ্রেমওয়ার্ক (#) বা নতুন ইতিহাস এপিআই-তে নির্ভর করে। যদি প্রতিটি পৃষ্ঠা পৃথক পৃষ্ঠা হত তবে আপনাকে এর কোনও প্রয়োজন হবে না।
  • কোড বের করার জটিলতা: আমরা স্বাভাবিকভাবেই ওয়েব সাইটগুলিকে পৃষ্ঠা হিসাবে মনে করি। একটি বহু-পৃষ্ঠার অ্যাপ্লিকেশন সাধারণত পৃষ্ঠা দ্বারা পার্টিশন কোড করে, যা রক্ষণাবেক্ষণযোগ্যতা সহায়তা করে।

আবার, আমি স্বীকার করি যে এই সমস্যাগুলির প্রত্যেকটিই কোনও না কোনও দামে সমাধানযোগ্য। তবে একটি পয়েন্ট আসে যেখানে আপনি সমস্যার সমাধান করতে আপনার সমস্ত সময় ব্যয় করছেন যা আপনি কেবল প্রথম স্থানে এড়াতে পারতেন। এটি সুবিধাগুলিতে ফিরে আসে এবং সেগুলি আপনার পক্ষে কতটা গুরুত্বপূর্ণ।


2
আমি মনে করি যে এই প্রতিক্রিয়া এমন এক ব্যক্তির কাছ থেকে খুব বৈধ প্রতিক্রিয়া সরবরাহ করে যা প্রকৃতপক্ষে একটি বৃহত জটিল সিস্টেম তৈরি করেছে এবং দীর্ঘমেয়াদী হতাহতের অভিজ্ঞতা এসপিএ নিয়ে এসেছে (বা এরকম দেখায়)
ড্যানিয়েলকুড্রা

4
এই উত্তরটি থেকে আমি যা পাই তা হ'ল, আপনি যদি দূর থেকেও গুরুতর কিছু করে থাকেন তবে এসপিএ এড়ান।
ইভানপি

আমি মনে করি আপনি আমাদের একটি খুব দরকারী ওভারভিউ দিয়েছেন বরং উত্তরটি দিয়েছেন। সত্যিই বাস্তববাদী।
হোস বুধ

3
আমি রাজী. এসপিএ দুর্দান্ত লাগছিল যখন আমরা ধারণার প্রমাণ দিয়েছিলাম। রাস্তায় এখন 3 বছর নীচে, আমরা এই উত্তরে বর্ণিত প্রতিটি সমস্যা দেখেছি এবং সেগুলি সমাধানের চেষ্টা করার জন্য আমরা অনেক সময় ব্যয় করতে থাকি। ফ্রেমওয়ার্ক পরিবর্তন এখন আর বিকল্প নয় এবং আমরা এমন একটি কাঠামোর সাথে আটকেছি যা মূলত উন্নয়ন বন্ধ করে দিয়েছে।
কিউ ফ্যান

1
আমি সর্বশেষ 4 অসুবিধাগুলি সরাসরি উপভোগ করেছি। আমি প্রায় 5K অ্যাঙ্গুলার জেএস কোড সহ প্রাথমিক খেলোয়াড় হিসাবে কৌণিক, বুটস্ট্র্যাপ এবং পিএইচপি দিয়ে 10K এলওসি ওয়েব অ্যাপ তৈরি করেছি। অ্যাঙ্গুলারের কিছু সত্যই ঝরঝরে বৈশিষ্ট্য রয়েছে তবে এই মুহুর্তে আমি সত্যিই ইচ্ছুক যে আমি সবেমাত্র একটি traditionalতিহ্যবাহী পৃষ্ঠা ভিত্তিক পদ্ধতির ব্যবহার করেছি এবং আমার মনে হয় এটি সাইটের উন্নয়নে উল্লেখযোগ্যভাবে গতি বাড়িয়েছে।
জ্যাক ম্যাকম্বার

41

অসুবিধেও

1. ক্লায়েন্ট অবশ্যই জাভাস্ক্রিপ্ট সক্ষম করতে হবে। হ্যাঁ, এটি এসপিএর একটি স্পষ্ট অসুবিধা। আমার ক্ষেত্রে আমি জানি যে আমি আমার ব্যবহারকারীদের জাভাস্ক্রিপ্ট সক্ষম করার আশা করতে পারি। যদি আপনি না পারেন তবে আপনি এসপিএ, পিরিয়ড করতে পারবেন না। এটি .NET ফ্রেমওয়ার্ক ইনস্টল না করে কোনও মেশিনে একটি নেট অ্যাপ স্থাপন করার চেষ্টা করার মতো।

২. সাইটে কেবল একটি এন্ট্রি পয়েন্ট। আমি স্যামিজেএস ব্যবহার করে এই সমস্যাটি সমাধান করি। আপনার রাউটিংটি সঠিকভাবে সেট আপ করতে 2-3 দিনের কাজের জন্য এবং লোকেরা আপনার অ্যাপ্লিকেশনটিতে গভীর-লিঙ্ক বুকমার্ক তৈরি করতে সক্ষম হবে যা সঠিকভাবে কাজ করে। আপনার সার্ভারকে কেবল একটি শেষ পয়েন্ট প্রকাশ করতে হবে - "এই অ্যাপ্লিকেশনটির জন্য আমাকে এইচটিএমএল + সিএসএস + জেএস দিন" শেষ পয়েন্ট (এটিকে পূর্বনির্ধারিত অ্যাপ্লিকেশনটির জন্য ডাউনলোড / আপডেটের স্থান হিসাবে ভাবেন) - এবং আপনি যে ক্লায়েন্ট-পাশের জাভাস্ক্রিপ্ট লিখেছেন তা হবে আবেদনের আসল প্রবেশটি পরিচালনা করুন handle

3. সুরক্ষা।এই সমস্যাটি এসপিএ-তে স্বতন্ত্র নয়, আপনার যখন "ওল্ড-স্কুল" ক্লায়েন্ট-সার্ভার অ্যাপ থাকে (পৃষ্ঠাগুলির মধ্যে লিঙ্ক দেওয়ার জন্য হাইপারটেক্সট ব্যবহারের HATEOAS মডেল) থাকে তখন আপনাকে ঠিক ঠিক একইভাবে মোকাবেলা করতে হবে। এটি ঠিক যে ব্যবহারকারী আপনার জাভাস্ক্রিপ্টের চেয়ে অনুরোধগুলি করছে এবং ফলাফলগুলি জেএসএন বা কিছু ডেটা ফর্ম্যাটের পরিবর্তে এইচটিএমএলে রয়েছে। একটি নন-এসপিএ অ্যাপে আপনাকে সার্ভারে পৃথক পৃষ্ঠাগুলি সুরক্ষিত করতে হবে, তবে এসপিএ অ্যাপে আপনাকে ডেটা এন্ডপয়েন্টগুলি সুরক্ষিত করতে হবে। (এবং, যদি আপনি না চান যে আপনার ক্লায়েন্টের সমস্ত কোড অ্যাক্সেস রয়েছে, তবে আপনাকে ডাউনলোডযোগ্য জাভাস্ক্রিপ্ট পৃথক পৃথক অঞ্চলে বিভক্ত করতে হবে I আমি কেবল এটি আমার স্যামিজেএস-ভিত্তিক রাউটিং সিস্টেমে টাই করি তাই ব্রাউজার কেবলমাত্র অনুরোধ করে ব্যবহারকারীর ভূমিকাগুলির প্রাথমিক লোডের উপর ভিত্তি করে ক্লায়েন্টটি জানেন যে এটির অ্যাক্সেস হওয়া উচিত,

সুবিধাদি

  1. এসপিএর একটি বড় স্থাপত্য সুবিধা (এটি খুব কমই উল্লেখ করা যায়) আপনার অ্যাপ্লিকেশনটির "চ্যাটিনেস" এর বিশাল হ্রাস। আপনি যদি ক্লায়েন্টের সর্বাধিক প্রসেসিং পরিচালনা করার জন্য এটি সঠিকভাবে ডিজাইন করেন (পুরো বিন্দু, সর্বোপরি), তবে সার্ভারের কাছে অনুরোধের সংখ্যা ("আপনার ব্যবহারকারীর অভিজ্ঞতা নষ্টকারী 503 ত্রুটির সম্ভাবনাগুলি পড়ুন") নাটকীয়ভাবে হ্রাস পেয়েছে। আসলে, একটি এসপিএ সম্পূর্ণরূপে অফলাইন প্রক্রিয়াকরণ সম্ভব করে তোলে যা কিছু পরিস্থিতিতে বিশাল is

  2. যদি আপনি এটি সঠিকভাবে করেন তবে ক্লায়েন্ট-সাইড রেন্ডারিংয়ের সাথে পারফরম্যান্স অবশ্যই ভাল। (সর্বোপরি নেটওয়ার্কের গতি উন্নত হচ্ছে)) কেবল এই ভিত্তিতে এসপিএর জন্য মামলা করবেন না।

  3. আপনার ইউআই ডিজাইনে নমনীয়তা সম্ভবত অন্যান্য বড় সুবিধা যা আমি পেয়েছি। একবার আমি আমার এপিআই (জাভাস্ক্রিপ্টে একটি এসডিকে সহ) সংজ্ঞায়িত করার পরে, আমি কিছু স্থিতিশীল সংস্থান ফাইলগুলি বাদ দিয়ে সার্ভারে শূন্য প্রভাব সহ আমার সম্মুখ-প্রান্তটি সম্পূর্ণরূপে পুনরায় লিখতে সক্ষম হয়েছি । একটি traditionalতিহ্যবাহী এমভিসি অ্যাপ্লিকেশন দিয়ে এটি করার চেষ্টা করুন! :) (আপনি যখন আপনার API এর সম্পর্কে চিন্তা করার জন্য লাইভ মোতায়েন এবং সংস্করণ সামঞ্জস্য রাখেন তখন এটি মূল্যবান হয়ে ওঠে))

সুতরাং, নীচের লাইন: আপনার যদি অফলাইন প্রক্রিয়াজাতকরণ প্রয়োজন হয় (বা কমপক্ষে আপনার ক্লায়েন্টদের মাঝে মাঝে সার্ভার বিভ্রাট থেকে বাঁচতে সক্ষম হতে পারে) - নাটকীয়ভাবে আপনার নিজের হার্ডওয়্যার ব্যয় হ্রাস করতে - এবং আপনি জাভাস্ক্রিপ্ট এবং আধুনিক ব্রাউজারগুলি ধরে নিতে পারেন, তবে আপনার এসপিএ প্রয়োজন। অন্যান্য ক্ষেত্রে এটি ট্রেড অফ বেশি।


6
আর একটি সুবিধা হ'ল কোনও এসপিএ আইওএসে বুকমার্ক হিসাবে ("হোম স্ক্রিনে যুক্ত করুন") হিসাবে সংরক্ষণ করা যায় এবং এটি পুরো স্ক্রিন মোডে খোলা থাকে (ধরে নিলে আপনি সঠিক মেটা ট্যাগটি সংজ্ঞায়িত করেছেন ), এটি এটিকে একটি দেশীয় অ্যাপের মতো মনে হচ্ছে এবং এটি একটি নয় ওয়েব পৃষ্ঠা
স্ট্রিল

7
৩. এটি প্রচলিত এমভিসি অ্যাপে ঠিক তত সহজ। আপনি যদি একই ডেটা দিয়ে কাজ করেন তবে আপনাকে কেবল আপনার অ্যাপের ভি (অংশ) অংশে পরিবর্তন করতে হবে। এটি সাধারণত টেমপ্লেট, সিএসএস এবং জেএস হয়।
কারান্টন

এসও-এর একটি এসপিএ সংস্করণ ভাগ করার জন্য স্বতন্ত্র প্রশ্নগুলির লিঙ্কগুলি থাকতে পারে, বা এটি কী কী সুবিধা এবং অসুবিধাগুলি আনতে পারে, উদাহরণস্বরূপ এসইও (একটি অনুসন্ধান ইঞ্জিন থেকে বিগত প্রশ্নগুলির অনুসন্ধানযোগ্যতা) এর পরিপ্রেক্ষিতে।
সেলুক 17

5
আমি দেখেছি বেশিরভাগ এসপিএ অ্যাপ্লিকেশনগুলি সার্ভার পার্শ্ব অ্যাপ্লিকেশনগুলির চেয়ে বেশি চটুল। ডেটা পাওয়ার জন্য একক অনুরোধের পরিবর্তে আপনি প্রতি পৃষ্ঠায় সার্ভারের আরও অনুরোধগুলি শেষ করতে পারেন।
ম্যাথু হোয়াইট

29

এসপিএর একটি বড় অসুবিধা - এসইও। সম্প্রতি গুগল এবং বিং ক্রলিংয়ের সময় জাভাস্ক্রিপ্ট চালিয়ে অ্যাজাক্স-ভিত্তিক পৃষ্ঠাগুলি সূচীকরণ শুরু করেছে এবং এখনও বেশিরভাগ ক্ষেত্রেই পৃষ্ঠাগুলিকে ভুলভাবে সূচী দেওয়া হচ্ছে।

এসপিএ বিকাশকালে, আপনি এসইও সমস্যাগুলি হ্যান্ডেল করতে বাধ্য হবেন, সম্ভবত আপনার সমস্ত সাইট পোস্ট-রেন্ডার করে এবং ক্রলারের ব্যবহারের জন্য স্ট্যাটিক এইচটিএমএল স্ন্যাপশট তৈরি করে। এটির জন্য একটি যথাযথ অবকাঠামোতে একটি শক্ত বিনিয়োগ প্রয়োজন।

19.06.16 আপডেট করুন:

কিছুক্ষণ আগে এই উত্তরটি লেখার পরে, আমি একক পৃষ্ঠা অ্যাপ্লিকেশন (যথা, AngularJS 1.x) এর সাথে আরও অনেক বেশি অভিজ্ঞতা অর্জন করেছি - তাই আমার কাছে ভাগ করার আরও তথ্য রয়েছে।

আমার মতে, এসপিএ অ্যাপ্লিকেশনগুলির প্রধান অসুবিধা হ'ল এসইও, এগুলি কেবলমাত্র "ড্যাশবোর্ড" অ্যাপ্লিকেশনগুলিতে সীমাবদ্ধ করে তোলে। এছাড়াও, ক্লাসিক সমাধানগুলির তুলনায় আপনি ক্যাশিংয়ের সাথে অনেক বেশি কঠিন সময় কাটাতে চলেছেন। উদাহরণস্বরূপ, এএসপি.নেট ক্যাশিংয়ে চূড়ান্তভাবে সহজ - কেবল আউটপুট ক্যাচিং চালু করুন এবং আপনি ভাল: পুরো HTML পৃষ্ঠাটি ইউআরএল (বা অন্য কোনও পরামিতি) অনুসারে ক্যাশে হবে। তবে, এসপিএতে আপনাকে নিজেকে ক্যাশে পরিচালনা করতে হবে (দ্বিতীয় স্তরের ক্যাশে, টেমপ্লেট ক্যাচিং ইত্যাদির মতো কিছু সমাধান ব্যবহার করে)।


কয়েকটি পৃষ্ঠাতে ছড়িয়ে থাকা একক পৃষ্ঠায় ট্র্যাফিক ফরোয়ার্ড করা কি এসইও এর চেয়ে ভাল?
সাইলেন্ট

@ সিলিন্ট - নিশ্চিত নয়, তবে একই ডোমেনের সমস্ত পৃষ্ঠাগুলি হওয়ায় আমার মনে হয় না যে কোনও পার্থক্য থাকা উচিত
ইলিডান

আমি এসইও যুক্তি বুঝতে পারি না। আপনার এসপিএতে কেবল একই রুটগুলি সংজ্ঞাযুক্ত সার্ভার-সাইডকেও সংজ্ঞায়িত করা যায় না, তাই অনুসন্ধান বটগুলি সহজেই আপনার সাইটটিকে ক্রল করতে পারে এবং একই সাথে লোকেরা আপনার সামগ্রীতে সরাসরি ইউআরএল পান। এবং তাই, আপনার কাছে দুটি টেমপ্লেট থাকতে পারে বড় জিনিস deal এ জাতীয় উদ্বেগ থাকলে আপনি সর্বজনীন টেম্প্লেটিং ব্যবহার করার চেষ্টা করতে পারেন।
মার্সএন্ডব্যাক

@ মার্সএন্ডব্যাক: আপনি কোন সার্ভারের লিঙ্কের কথা বলছেন তা নিশ্চিত নয়। যদি আপনার সাইটম্যাপটি বোঝানো হয় - তবে এসপিএর ক্ষেত্রে এটি অকেজো: অনুসন্ধান ইঞ্জিনগুলি জাভাস্ক্রিপ্ট কার্যকর করে না (কমপক্ষে, এটি কয়েক বছর আগে এই জিনিসগুলির অবস্থা ছিল), তারা কেবল HTML ডাউনলোড করে এবং পার্স করে। সুতরাং, আপনি সাইটম্যাপ প্রস্তুত করলেও - পৃষ্ঠাটি সঠিকভাবে নির্মিত হবে না।
Illidan

12

আমি ডেটা চালিত অ্যাপ্লিকেশনগুলির জন্য এসপিএ-কে সর্বোত্তম করার জন্য কেসটি তৈরি করতে চাই। জিমেইল অবশ্যই ডেটা সম্পর্কে এবং এইভাবে এসপিএর জন্য ভাল প্রার্থী।

তবে যদি আপনার পৃষ্ঠাটি বেশিরভাগ প্রদর্শনের জন্য হয়, উদাহরণস্বরূপ, পরিষেবার পৃষ্ঠার শর্তাদি, তবে একটি এসপিএ সম্পূর্ণরূপে ওভারকিল হয়।

আমি মনে করি যে মিষ্টি স্পটটি নির্দিষ্ট পৃষ্ঠার উপর নির্ভর করে এসপিএ এবং স্ট্যাটিক / এমভিসি উভয় স্টাইল পৃষ্ঠার মিশ্রণ সহ একটি সাইট করছে।

উদাহরণস্বরূপ, আমি যে একটি সাইটে বিল্ডিং করছি, ব্যবহারকারী একটি মানক এমভিসি সূচক পৃষ্ঠাতে অবতরণ করে। কিন্তু তারপরে যখন তারা আসল অ্যাপ্লিকেশনটিতে যায়, তখন এটি এসপিএ কল করে। এর আর একটি সুবিধা হ'ল এসপিএর লোড-টাইম হোম পেজে নয়, তবে অ্যাপ পৃষ্ঠায়। হোম পেজে লোড সময় প্রথমবারের সাইট ব্যবহারকারীদের জন্য একটি বিভ্রান্তি হতে পারে।

এই দৃশ্যটি একটু ফ্ল্যাশ ব্যবহার করার মতো। কয়েক বছরের অভিজ্ঞতার পরে, লোড ফ্যাক্টরের কারণে কেবলমাত্র ফ্ল্যাশ সাইটের সংখ্যা শূন্যের কাছাকাছি চলে গেছে। পৃষ্ঠার উপাদান হিসাবে, এটি এখনও ব্যবহৃত।


1
ওয়েব ডেভলপমেন্টের বহু বছর পরে যা আমি নিশ্চিত করতে পারি। আপনার দুটিই স্পা এবং এমভিসি অ্যাপ্লিকেশন একসাথে মিশ্রিত করা উচিত। আপনার কোন উত্তর নেই, না হয়ও। আমার স্পা হিসাবে আমার সম্পূর্ণ অ্যাপ্লিকেশনটি প্রথমে ছিল, আমার অ্যাপটি গুগল দ্বারা সঠিকভাবে তালিকাভুক্ত নয়। তাই আমি এমপিএতে চলে এসেছি এবং কেবল প্রয়োজনীয় পরিস্থিতিতে স্পা ব্যবহার করি। ওয়ার্ডপ্রেসও স্পা নয় এবং ভাল কারণে একটি জনপ্রিয় কাঠামো।
রুডল্ফ

1
এটি আমার পদ্ধতির পাশাপাশি আমার ব্যবহারকারীদের দ্রুত অনুসন্ধানের ফলাফলগুলি দ্রুত ছড়িয়ে দেওয়ার প্রধান ক্ষেত্র হিসাবে আমার কাছে এসপিএ রয়েছে কোনও মানচিত্র বা গতিশীল তালিকায়। তারপরে বিশদটি দেখার সময়, সেগুলি স্ট্যান্ডার্ড সার্ভার-রেন্ডারকৃত পৃষ্ঠা হিসাবে খোলে। আমার রুটগুলি এসপিএ এবং প্রথম-লোড সার্ভার রুট হিসাবে উভয়ই কাজ করে। আমি টেম্পলেট কোড এবং রুট কোড নকল করেছি, কিন্তু আমি কম যত্ন নিতে পারে না, এটি একটি প্রয়োজনীয় মন্দ।
মার্সএন্ডব্যাক

8

গুগল, অ্যামাজন ইত্যাদির মতো সংস্থাগুলির জন্য, যাদের সার্ভারগুলি 24/7-মোডে সর্বাধিক ক্ষমতা নিয়ে চলছে, ট্র্যাফিক হ্রাস করার অর্থ আসল অর্থ - কম হার্ডওয়্যার, কম শক্তি, কম রক্ষণাবেক্ষণ। সার্ভার থেকে ক্লায়েন্টে সিপিইউ-ব্যবহার স্থানান্তরিত করা বন্ধ হয়ে যায় এবং এসপিএ চমকপ্রদ হয়। সুবিধাগুলি অতিরিক্ত ওজনের অসুবিধাগুলি এখন পর্যন্ত। সুতরাং, এসপিএ বা না এসপিএ ব্যবহারের ক্ষেত্রে অনেক বেশি নির্ভর করে।

কেবল আরেকটি উল্লেখ করার জন্য, সম্ভবত এসপিএগুলির ক্ষেত্রে এতটা স্পষ্ট নয় (ওয়েব-বিকাশকারীদের ক্ষেত্রে): আমি বর্তমানে এম্বেড থাকা সিস্টেমগুলিতে জিইআইআই প্রয়োগ করার একটি উপায় খুঁজছি এবং ব্রাউজার-ভিত্তিক আর্কিটেকচারটি আমার কাছে আবেদনময় বলে মনে হয়। Ditionতিহ্যগতভাবে এম্বেড থাকা সিস্টেমে ইউআইগুলির পক্ষে খুব বেশি সম্ভাবনা ছিল না - জাভা, কিউটি, ডাব্লুএক্স, ইত্যাদি বা স্বতন্ত্র বাণিজ্যিক কাঠামো। কয়েক বছর আগে অ্যাডোব ফ্ল্যাশ নিয়ে বাজারে প্রবেশের চেষ্টা করেছিল তবে মনে হয় তেমন সফল হয় নি।

আজকাল, "এমবেডেড সিস্টেমগুলি" যেমন কয়েক বছর আগে মেইনফ্রেমগুলির মতো শক্তিশালী, আরআরএসটি-র মাধ্যমে নিয়ন্ত্রণ ইউনিটে সংযুক্ত একটি ব্রাউজার-ভিত্তিক ইউআই সম্ভাব্য সমাধান। সুবিধাটি হ'ল, বিনা ব্যয়ে ইউআইয়ের জন্য সরঞ্জামগুলির বিশাল প্যালেট। (উদাহরণস্বরূপ, কিউএটিটির জন্য রয়্যালটি ফিতে প্রতি ইউনিট 20-30 plus প্লাস প্রতি বিকাশকারী 3000-4000 require প্রয়োজন)

যেমন আর্কিটেকচারের জন্য এসপিএ অনেকগুলি সুবিধা দেয় - যেমন ডেস্কটপ-অ্যাপ্লিকেশন বিকাশকারীদের জন্য আরও পরিচিত বিকাশ-পদ্ধতি, সার্ভার অ্যাক্সেস হ্রাস (প্রায়শই গাড়ি-শিল্পে ইউআই এবং সিস্টেমের কর্দমগুলি পৃথক হার্ডওয়্যার, যেখানে সিস্টেম অংশে একটি আরটি ওএস থাকে)।

একমাত্র ক্লায়েন্ট অন্তর্নির্মিত ব্রাউজার হিসাবে, জেএস-উপলভ্যতা, সার্ভার-সাইড লগিং, সুরক্ষার মতো উল্লিখিত অসুবিধাগুলি আর গণ্য হয় না।


1
আমাজন ব্যান্ডউইথ বা অনুরোধ গণনা সম্পর্কে খুব বেশি চিন্তিত নয়। প্রতিটি পৃষ্ঠা প্রায় 10MB এবং 200 এরও বেশি অনুরোধ।
ম্যাথু হোয়াইট

3

২. এসপিএ সহ আমাদের পৃষ্ঠাগুলি ডাউনলোড করতে সার্ভারে অতিরিক্ত কোয়েরি ব্যবহার করার দরকার নেই।

আমাকে এখনও অনেক কিছু শিখতে হবে তবে আমি যেহেতু এসপিএ সম্পর্কে শিখতে শুরু করেছি, আমি তাদের ভালবাসি।

এই নির্দিষ্ট পয়েন্টটি একটি বিশাল পার্থক্য করতে পারে।

এসপিএ নয় এমন অনেক ওয়েব অ্যাপ্লিকেশনগুলিতে আপনি দেখতে পাবেন যে তারা এখনও অ্যাজাক্স অনুরোধ করা পৃষ্ঠাগুলিতে পুনরুদ্ধার এবং সামগ্রী যুক্ত করবে। সুতরাং আমি মনে করি যে এসপিএ বিবেচনা করেই অতিক্রম করবে: অজাক্স ব্যবহার করে যে সামগ্রীটি পুনরুদ্ধার করা হবে এবং প্রদর্শিত হবে তা যদি পুরো পৃষ্ঠাটি হয়? এবং একটি পৃষ্ঠার একটি ছোট অংশ না?

আমি একটি দৃশ্য উপস্থাপন করা যাক। আপনার 2 টি পৃষ্ঠা রয়েছে তা বিবেচনা করুন:

  1. পণ্যের তালিকা সহ একটি পৃষ্ঠা
  2. একটি নির্দিষ্ট পণ্য বিশদ দেখতে একটি পৃষ্ঠা

আপনি তালিকার পৃষ্ঠায় রয়েছেন তা বিবেচনা করুন। তারপরে আপনি বিশদটি দেখতে কোনও পণ্যতে ক্লিক করুন। ক্লায়েন্ট সাইড অ্যাপ্লিকেশনটি 2 অজ্যাক্স অনুরোধগুলি ট্রিগার করবে:

  1. পণ্যের বিবরণ সহ একটি জসন বস্তু পাওয়ার অনুরোধ
  2. এইচটিএমএল টেমপ্লেট পাওয়ার জন্য একটি অনুরোধ যেখানে পণ্যের বিবরণ সন্নিবেশ করা হবে

তারপরে, ক্লায়েন্ট সাইড অ্যাপ্লিকেশনটি এইচটিএমএল টেম্পলেটটিতে ডেটা .োকাবে এবং প্রদর্শন করবে।

তারপরে আপনি তালিকায় ফিরে যান (এর জন্য কোনও অনুরোধ করা হয় না!) এবং আপনি অন্য পণ্যটি খোলেন। এবার, পণ্যের বিশদ পাওয়ার জন্য কেবলমাত্র একটি এজ্যাক্স অনুরোধ থাকবে। এইচটিএমএল টেমপ্লেটটি একই হতে চলেছে যাতে আপনার আর ডাউনলোড করার দরকার নেই।

আপনি বলতে পারেন যে কোনও এসপিএ-তে আপনি যখন পণ্য বিবরণ খুলেন, আপনি কেবল 1 টি অনুরোধ করেন এবং এই দৃশ্যে আমরা 2 টি করেছি Yes হ্যাঁ। তবে আপনি সামগ্রিক দৃষ্টিকোণ থেকে উপার্জনটি পান, যখন আপনি অনেক পৃষ্ঠা জুড়ে নেভিগেট করেন, অনুরোধের সংখ্যা কম হতে চলেছে। এবং ক্লায়েন্টের পাশ এবং সার্ভারের মধ্যে স্থানান্তরিত ডেটা খুব কম হতে চলেছে কারণ এইচটিএমএল টেমপ্লেটগুলি পুনরায় ব্যবহৃত হতে চলেছে। এছাড়াও, আপনাকে সমস্ত অনুরোধে সেই সমস্ত CSS, চিত্র, জাভাস্ক্রিপ্ট ফাইলগুলি ডাউনলোড করতে হবে না যা সমস্ত পৃষ্ঠায় উপস্থিত রয়েছে।

এছাড়াও, আসুন বিবেচনা করুন যে আপনার সার্ভারের পাশের ভাষা জাভা। আমি উল্লিখিত 2 টি অনুরোধগুলি যদি আপনি বিশ্লেষণ করেন তবে 1 টি ডাউনলোড তথ্য (আপনার কোনও ভিউ ফাইল লোড করার এবং ভিউ রেন্ডারিং ইঞ্জিনটি কল করার দরকার নেই) এবং অন্যান্য ডাউনলোডগুলি এবং স্ট্যাটিক এইচটিএমএল টেমপ্লেট যাতে আপনার পুনরুদ্ধার করতে পারে এমন একটি HTTP ওয়েব সার্ভার থাকতে পারে এটি সরাসরি জাভা অ্যাপ্লিকেশন সার্ভার কল না করেই কোনও গণনা করা হয় না!

অবশেষে, বড় সংস্থাগুলি এসপিএ: ফেসবুক, জিমেইল, অ্যামাজন ব্যবহার করছে। তারা খেলে না, তাদের সবচেয়ে বড় ইঞ্জিনিয়াররা এই সমস্ত অধ্যয়ন করছে। সুতরাং আপনি যদি সুবিধাগুলি না দেখেন তবে প্রাথমিকভাবে আপনি তাদের বিশ্বাস করতে পারেন এবং রাস্তায় এগুলি আবিষ্কার করার আশা করছেন।

তবে ভাল এসপিএ ডিজাইনের নিদর্শনগুলি ব্যবহার করা গুরুত্বপূর্ণ। আপনি AngularJS এর ​​মতো কাঠামো ব্যবহার করতে পারেন। ভাল ডিজাইনের নিদর্শনগুলি ব্যবহার না করে কোনও এসপিএ বাস্তবায়নের চেষ্টা করবেন না কারণ আপনার কোনও গোলমাল হতে পারে।


1
ফেসবুক কোনও এসপিএ নয়, প্রকৃতপক্ষে এটি একটি এমপিএ শৈলীর অ্যাপ্লিকেশন, তারা মন্তব্য এবং আড্ডার জন্য এখানে এবং সেখানে ReactJS ব্যবহার করছে, পিডাব্লুএ সক্ষম হওয়া পূর্ণ এসপিএ পৃষ্ঠার জন্য ইনস্টাগ্রাম একটি ভাল উদাহরণ। অ্যামাজনের ক্ষেত্রে একই আবেদন, ইউটিউব উভয়ই এমপিএ অ্যাপ্লিকেশন।
পিটার হ্যাবাক

3

অসুবিধাগুলি : প্রযুক্তিগতভাবে, এসপিএর নকশা এবং প্রাথমিক বিকাশ জটিল এবং এড়ানো যায়। এই এসপিএ ব্যবহার না করার অন্যান্য কারণগুলি হ'ল:

  • ক) সুরক্ষা: ক্রস সাইট স্ক্রিপ্টিং (এক্সএসএস) এর কারণে traditionalতিহ্যবাহী পৃষ্ঠাগুলির তুলনায় সিঙ্গল পেজ অ্যাপ্লিকেশনটি কম সুরক্ষিত।
  • খ) মেমরি ফাঁস: জাভাস্ক্রিপ্টে মেমরি ফাঁস এমনকি শক্তিশালী কম্পিউটারকে ধীর করতে পারে। Traditionalতিহ্যবাহী ওয়েবসাইটগুলি পৃষ্ঠাগুলির মধ্যে চলাচল করতে উত্সাহিত করার ফলে, পূর্ববর্তী পৃষ্ঠার ফলে যে কোনও মেমরি ফাঁস হ'ল প্রায় অবশিষ্টাংশকে পেছনে ফেলে পরিষ্কার করা হয়।
  • গ) ক্লায়েন্টকে এসপিএ চালাতে জাভাস্ক্রিপ্ট সক্ষম করতে হবে, তবে বহু পৃষ্ঠাগুলির প্রয়োগে জাভাস্ক্রিপ্ট পুরোপুরি এড়ানো যায়।
  • ঘ) এসপিএ অনুকূল আকারে বেড়ে যায়, দীর্ঘ প্রতীক্ষার সময় দেয়। উদাহরণস্বরূপ: ধীর সংযোগের সাথে Gmail এ কাজ করা।

উপরে ছাড়াও অন্যান্য স্থাপত্য সীমাবদ্ধতা হ'ল নেভিগেশনাল ডেটা হ্রাস, ব্রাউজারে নেভিগেশনাল ইতিহাসের লগ এবং সেলেনিয়াম সহ অটোমেটেড ফাংশনাল টেস্টিংয়ে অসুবিধা।

এই লিঙ্কটি একক পৃষ্ঠা অ্যাপ্লিকেশন এর সুবিধা এবং অসুবিধা ব্যাখ্যা করে।


12
এটি ভুল। ক) এক্সএসএস ক্লায়েন্টে উত্পন্ন নথিগুলির মতো সার্ভার-উত্পাদিত পৃষ্ঠাগুলিকে সহজেই প্রভাবিত করে। আমি আরও তর্ক করব, ক্লায়েন্টের উপর খুব সহজ এবং কার্যকর এক্সএসএস প্রশমন সমাধান রয়েছে given আপনি যদি এক্সএসএসকে অনুমতি দিতে না চান, ব্যবহারকারী-জমা দেওয়া সামগ্রীকে এইচটিএমএল হিসাবে ব্যাখ্যা করবেন না। যে কোনও শালীন প্রোগ্রামার এটি পরিচালনা করতে পারে। যেকোন উপলভ্য কৌশল (পুশস্টেট, হ্যাশ রাউটিং ইত্যাদি) ব্যবহার করে নেভিগেশন করা সহজ। সঠিকভাবে নির্মিত এসপিএর জন্য এএফটি অন্য কোনও ওয়েব অ্যাপ্লিকেশনটির মতোই। আপনার উত্তরের সারাংশটি হ'ল আপনি ক্লায়েন্টের জন্য কীভাবে তৈরি করবেন তা জানেন না।
জেসন মিলার

@ জেসনমিলার: একমত আমি কেবল বুঝতে পারি যে সারাংশটি পুরো ব্লগের সমস্ত প্রসঙ্গ নয়। আমি এটি পরিবর্তন করব। ধন্যবাদ.
বিশ

6
A এবং b পয়েন্ট সম্পূর্ণ অবৈধ। উভয়েরই এসপিএর বৈশিষ্ট্যগুলির চেয়ে দুর্বল প্রোগ্রামিংয়ের সাথে আরও অনেক কিছু রয়েছে এবং উভয়ই একটি traditionalতিহ্যবাহী ওয়েবসাইটের সাথে পুরোপুরি সম্ভব; আপনি জেএস এর একটি লাইন না লিখলেও এক্সএসএস দুর্বলতাগুলি আপনার সাইটে প্রভাব ফেলতে পারে। মেমরি লিকগুলি ক্লায়েন্ট সাইডের মতোই সম্ভব সার্ভার-সাইড। পয়েন্ট সি হিসাবে, যে কেউ এই দিন এবং বয়সের জাভাস্ক্রিপ্টকে অক্ষম করে সে সম্ভবত সাধারণভাবে ওয়েব ব্যবহার করা বড় সমস্যা হিসাবে খুঁজে পেতে পারে, এটি একটি নন-ইস্যু আইএমএইচও।
315

2

আমার বিকাশে আমি এসপিএ ব্যবহারের জন্য দুটি স্বতন্ত্র সুবিধা পেয়েছি। এর অর্থ এই নয় যে কেবলমাত্র অতিরিক্ত অসুবিধাগুলি প্রবর্তন না করে আমি বর্ধিত বেনিফিট দেখি কেবল aতিহ্যবাহী ওয়েব অ্যাপে নিম্নলিখিতটি অর্জন করা যায় না।

  • নতুন সামগ্রীতে রেন্ডারিং হিসাবে কম সার্ভারের অনুরোধের সম্ভাব্যতা সর্বদা বা এমনকি কোনও এইচটিএমএল পৃষ্ঠার জন্য কোনও HTTP সার্ভার অনুরোধ নয়। তবে আমি বলছি সম্ভাবনা কারণ নতুন সামগ্রীতে সহজেই ডেটা টানতে একটি অ্যাজাক্স কল প্রয়োজন হতে পারে তবে সেই ডেটা নিজেই প্লাস মার্কআপের তুলনায় ক্রমহ্রাসমান আরও হালকা হতে পারে যা নেট বেনিফিট সরবরাহ করে।

  • "রাষ্ট্র" বজায় রাখার ক্ষমতা। এর সহজ শর্তে, অ্যাপ্লিকেশনটিতে প্রবেশের ক্ষেত্রে একটি পরিবর্তনশীল সেট করুন এবং এটি ব্যবহারকারীর অভিজ্ঞতা জুড়ে অন্যান্য উপাদানগুলির কাছে এটি পাস না করে বা স্থানীয় স্টোরেজ বিন্যাসে সেট না করে উপলব্ধ হবে will বুদ্ধিমানের সাথে এই ক্ষমতাটি পরিচালনা করা শীর্ষ স্তরের সুযোগটি নিরবিচ্ছিন্ন রাখার জন্য গুরুত্বপূর্ণ।

জেএসের প্রয়োজন ছাড়াও (যা ওয়েব অ্যাপ্লিকেশনগুলির প্রয়োজনীয়তার জন্য একটি উন্মাদ বিষয় নয়) অন্যান্য উল্লেখযোগ্য অসুবিধাগুলি আমার মতে হয় এসপিএর সাথে সুনির্দিষ্ট নয় বা ভাল অভ্যাস এবং বিকাশের নিদর্শনগুলির মাধ্যমে হ্রাস করা যেতে পারে।


1

সার্ভারের দিক থেকে আপনি কীভাবে সুরক্ষা এবং এপিআই স্থিতিশীলতার দিকে নজর দেবেন তা নির্ধারণ না করে কোনও এসপিএ ব্যবহার না করার চেষ্টা করুন। তারপরে আপনি এসপিএ ব্যবহারের কিছু সত্য সুবিধা দেখতে পাবেন। বিশেষত, আপনি যদি সুরক্ষার জন্য OUUTH 2.0 প্রয়োগ করে এমন একটি রেস্টলফুল সার্ভার ব্যবহার করেন তবে আপনি উদ্বেগের দুটি মৌলিক পৃথকীকরণ অর্জন করবেন যা আপনার বিকাশ এবং রক্ষণাবেক্ষণের ব্যয়কে হ্রাস করতে পারে।

  1. এটি সেশনটি (এবং এটির সুরক্ষা) এসপিএতে স্থানান্তরিত করবে এবং আপনার সার্ভারটিকে সেই ওভারহেডের সমস্ত থেকে মুক্তি দেবে।
  2. আপনার এপিআই স্থিতিশীল এবং সহজেই এক্সটেনসিবল হয়ে উঠেছে।

পূর্বে ইঙ্গিত দেওয়া হয়েছে, তবে স্পষ্ট করে দেওয়া হয়নি; যদি আপনার লক্ষ্য অ্যান্ড্রয়েড এবং অ্যাপল অ্যাপ্লিকেশন মোতায়েন করা হয় তবে একটি জাভাস্ক্রিপ্ট এসপিএ লিখে যা কোনও ব্রাউজারে (অ্যান্ড্রয়েড বা অ্যাপল) স্ক্রিনটি হোস্ট করার জন্য দেশীয় কল দ্বারা মোড়ানো একটি অ্যাপল কোড বেস এবং অ্যান্ড্রয়েড কোড বেস উভয়ই বজায় রাখার প্রয়োজনীয়তা দূর করে।


0

আমি বুঝতে পারি এটি একটি পুরানো প্রশ্ন, তবে আমি একক পৃষ্ঠা অ্যাপ্লিকেশনগুলির আরও একটি অসুবিধা যুক্ত করতে চাই:

যদি আপনি এমন একটি এপিআই তৈরি করেন যা কোনও ফর্ম্যাট ভাষা (HTML এর মতো) পরিবর্তে কোনও ডেটা ল্যাঙ্গুয়েজে (যেমন এক্সএমএল বা জেএসএন) ফলাফল দেয়, আপনি বৃহত্তর অ্যাপ্লিকেশন আন্তঃক্রিয়াশীলতা সক্ষম করছেন, উদাহরণস্বরূপ, ব্যবসায়-টু-বিজনেস (বি 2 বি) অ্যাপ্লিকেশনগুলিতে। এই জাতীয় আন্তঃব্যবহারযোগ্যতার দুর্দান্ত সুবিধা রয়েছে তবে লোকেরা আপনার ডেটা "খনি" (বা চুরি) করতে সফ্টওয়্যার লিখতে দেয়। এই বিশেষ অসুবিধাগুলি সমস্ত এপিআই-এর কাছে সাধারণ যা ডেটা ভাষা ব্যবহার করে এবং সাধারণভাবে এসপিএগুলিতে নয় (প্রকৃতপক্ষে, কোনও এসপিএ যা প্রাক-রেন্ডারযুক্ত এইচটিএমএল এর জন্য সার্ভারকে জিজ্ঞাসা করে এটি এড়ানো হয়, তবে দরিদ্র মডেল / দেখুন বিভাজনের ব্যয়ে)। এই অসুবিধার দ্বারা উদ্ভূত এই ঝুঁকিটি বিভিন্ন মাধ্যমে যেমন হ্রাস করা যায়, যেমন অনুরোধ সীমাবদ্ধকরণ এবং সংযোগ অবরুদ্ধকরণ ইত্যাদি it


2
1.) একটি এপিআই না থাকার অর্থ এই নয় যে এইচটিএমএল পৃষ্ঠাগুলি খনন করা যায় না। ২) আপনি আপনার API এর অপব্যবহার কিছুটা রোধ করতে পারেন। ৩) একটি এপিআই পেয়ে আপনি সহজেই কেবল ওয়েব পৃষ্ঠাগুলি তৈরি করতে পারবেন না, তবে এর উপরে মোবাইল অ্যাপ্লিকেশনও তৈরি করতে পারেন, যা আমার মতে কোনও অসুবিধা ছাড়িয়ে যায়।
হনজা কালফাস

1. আমি বলিনি যে নন-এপিআই ডেটা মাইনিং প্রতিরোধ করে। আমি কেবল বলেছি যে একটি এপিআই ডেটা মাইনিংকে আরও সহজ করে তুলতে পারে। ২. এটিই আমার শেষ বাক্যটি সম্বোধন করেছিল। ৩. একটি এপিআই থাকার অনেক সুবিধা রয়েছে এবং আমি সাধারণত আমার বেশিরভাগ ব্যবহারের ক্ষেত্রে একটি API / SPA সংমিশ্রণ পছন্দ করি। যাইহোক, আমি কেবল তালিকায় একটি অসুবিধা যুক্ত করতে চেয়েছি (যা পূর্ববর্তী ক্ষেত্রে আমার সম্পূর্ণ উত্তরের চেয়ে মন্তব্য হিসাবে যুক্ত করা উচিত ছিল)।
ম্যাগনাস

দুঃখিত, তবে আমি যদি ভুল বোঝে না, আপনি তা করেন নি, আপনি বলেছিলেন যে "এই জাতীয় আন্তঃব্যবহারের দুর্দান্ত সুবিধা রয়েছে তবে লোকেরা আপনার ডেটা" আমার "(বা চুরি) করার জন্য সফ্টওয়্যারটি লেখার অনুমতি দেয়" " যদি আমি আপনার বাক্যটি কিছুটা পরিবর্তন করি তবে আমি এটিও বলতে পারি যে "ওয়েবসাইটগুলি লোকেরা আপনার ডেটা" আমার "(বা চুরি করে) সফ্টওয়্যার লেখার অনুমতি দেয়।" এবং সঠিক হতে। এখন আমি বলছি না যে আপনার ধারণাটি ভুল, আমি খনির কাজ সহজ হওয়ার সাথে একমত, আমি কেবল এটিই বলছি যে আপনি যা লিখেছেন তা নয়;)
হোনজা কালফাস

একমত। এটি যথেষ্ট পরিষ্কার ছিল না। এইচটিএমএলে এম্বেড করা ডেটা খনিযোগ্য। জেএসএন / এক্সএমএল / ইত্যাদিতে এম্বেড করা ডেটাও খনিযোগ্য, সহজতর
ম্যাগনাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.