সার্ভার-সাইড পৃষ্ঠা রেন্ডারিং ব্যবহার করে কী সুবিধা দেওয়া হয়?


19

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

অ্যাপ্লিকেশনটি মূলত একটি অনুসন্ধান ইঞ্জিন, তবে এতে বিভিন্ন ভূমিকা সহ ব্যবহারকারী অ্যাকাউন্ট থাকবে accounts

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

এটা: গতি? সহজ উন্নয়ন এবং কর্মপ্রবাহ? বিদ্যমান লাইব্রেরি অ্যাক্সেস? আরো? উপরের সবগুলো?


4
সুরক্ষা একটি বড় এক। বিশেষত যখন অ্যাপ্লিকেশনটি গতিশীল হয় এবং একটি ডাটাবেসের সাথে যোগাযোগ করা প্রয়োজন।
ওদে

2
@ ওজেড - আপনি যখন API এ বনাম পৃষ্ঠাটি রেন্ডার করেন তখন সুরক্ষা করা কেন সহজ? আমি সবসময় ভেবেছিলাম যে আপনাকে যা প্রোগ্রাম করতে হবে তা উভয় দিকের সমতুল্য, তবে এটিপি (পিপিআই) করার সময় ক্লায়েন্টের উপর বিশ্বাস না রাখার কথা মনস্তাত্ত্বিকভাবে সহজ (কমপক্ষে আমার জন্য)। আমি জিজ্ঞাসা করছি কারণ যদি আমি এমন কিছু উপেক্ষা করি যা আমি সত্যিই জানতে চাই।
PSr

1
@psr তিনি ব্যবহারকারী সুরক্ষার (উদাহরণস্বরূপ, এমআইটিএম শোষণ) এর মতো ডেটা সুরক্ষার কথা উল্লেখ নাও করতে পারেন। যদিও একটি অনুমান।
maple_shaft

1
@psr - সম্মত তবে, গতকালই আমি একটি প্রশ্নের জবাব দিয়েছি যেখানে ওপিতে সংযোগের স্ট্রিংটি জেএসে এমবেড করা ছিল ...
ওদেড

1
@ ম্যাপেল_শ্যাফ্ট - এমআইটিএম হ'ল এটি সম্পর্কে ভাবার বিষয়, তবে আমি নিশ্চিত নই যে এটি কেন এপিআই বনাম সার্ভারের দ্বারা উত্পাদিত এইচটিএমএলকে আলাদা করে। আমি মনে করি যে কোনও এআইপিআই এর বিরুদ্ধে প্রোগ্রাম করা আরও সুবিধাজনক, তাই এটি একটি সামান্য সহজ ক্র্যাক হবে তবে আমি সন্দেহ করি যে এটি আপনি কী বোঝাতে চেয়েছিলেন।
PSr

উত্তর:


16

সার্ভার-সাইড এইচটিএমএল রেন্ডারিং:

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

* যখন ইউআই প্রয়োজনীয়তা ফ্রেমওয়ার্কটি ভাল ফিট করে।


ক্লায়েন্ট-সাইড এইচটিএমএল রেন্ডারিং:

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

** যখন ইউআই আরও বেশি আকর্ষণীয় ইন্টারঅ্যাকশন সহ কাস্টম হয়। এছাড়াও, আমি ব্রাউজারে কোডিং এটি ব্যাখ্যা করা কোড লক্ষণীয়ভাবে speedier প্রনয়ন এবং সার্ভার পুনরায় আরম্ভ জন্য অপেক্ষা করে।


আপনি গোঁফের মতো ফ্রন্ট-এন্ড / ব্যাক-এন্ড টেম্প্লেটিং সিস্টেম ব্যবহার করে হালকা ব্যাকএন্ড বাস্তবায়ন সহ একটি হাইব্রিড মডেলটিকেও বিবেচনা করতে পারেন ।


1
ওহ, ক্যাশিংয়ের সুযোগগুলি সম্পর্কে পুরোপুরি ভুলে গেছি!
মাইকেল কে

"" স্ট্যান্ডার্ড "অ্যাপ্লিকেশনগুলির জন্য, অনেকগুলি ইউআই বৈশিষ্ট্য পূর্ব-অন্তর্নির্মিত" এটি অপ্রাসঙ্গিক, সার্ভার এবং ক্লায়েন্ট উভয়েরই রয়েছে।
রায়নস

@ রায়নস তিনি ক্লায়েন্ট-সাইড ফ্রেমওয়ার্ক ব্যবহারের কথা উল্লেখ করেননি, তবে তিনি যদি এটি ব্যবহার করেন, তবে এটি একটি ভাল বিষয়।
পিটারোপেটার

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

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

3

সার্ভার-সাইড এইচটিএমএল জেনারেশন:

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

ক্লায়েন্ট সাইড এইচটিএমএল জেনারেশন:

  • ডিবাগ করা কঠিন;
  • অপ্রচলিত ব্রাউজারগুলির সাথে কিছু সমস্যা;
  • এইচটিএমএল-টেমপ্লেটগুলি ক্লায়েন্ট-সাইডে ক্যাচ করার কোনও সমস্যা নেই;
  • এইচটিএমএল-টেমপ্লেট এবং জেএস কোডের জন্য ক্যাচিং-প্রক্সি এবং সিডিএন সুবিধা গ্রহণ করা;
  • নেটওয়ার্কের ব্যবহার অনেক কম;

দ্রষ্টব্য, ক্লায়েন্ট-সাইড প্রজন্মটি সফল মোবাইল সাইটগুলির ক্ষেত্রে এটি যেভাবে সম্পন্ন হয়েছে, সম্ভবত আধুনিক ব্রাউজারগুলির সাথে এটি আরও দক্ষ (

লিংকডইনটিতে ক্লাস্টিক -সাইড অ্যাপ্রোচ করার সুবিধাগুলি সম্পর্কে একটি নিবন্ধ রয়েছে যেমন উদাহরণ হিসাবে: "ধুলায় জেএসপি রেখে যাওয়া: লিঙ্কডইনকে ধুলায় ফেলা হচ্ছে। ক্লায়েন্ট-সাইড টেম্পলেটগুলি"


1
+1 আধুনিক স্মার্টফোনগুলিতে (প্রাথমিকভাবে ওয়েবকিট মোবাইল ব্যবহার করে), জেএস বাধা দেওয়ার সম্ভাবনা নেই, যেখানে সেল-নেটওয়ার্ক ব্যান্ডউইথ রয়েছে
পিটারোপেটার

1

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

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

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

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

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

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


you can't write SQL in Javascript সত্যি ?! আপনি কি কখনও জাভাস্ক্রিপ্টের জন্য স্ট্যাকওভারফ্লো প্রশ্নগুলি দেখেছেন ? আমি দুর্ভাগ্যক্রমে পৃথক করতে অনুরোধ করব। মঞ্জুর এটা একক সবচেয়ে খারাপ জিনিস আপনি সম্ভবত ... ক্লায়েন্ট কোডে কাজ করতে পারে কিন্তু
maple_shaft

... এছাড়াও আমি নোড.জেএস সম্পর্কে ভুলে গিয়েছিলাম, তবে তারপরে সার্ভার জেএস যা পুরোপুরি সম্পূর্ণ ভিন্ন প্রাণী।
maple_shaft

স্পষ্টতই আপনি পারবেন - টিআইএল! শুধু ... বাহ, যদিও। ভাষার অপব্যবহারের কথা বলুন যদিও!
মাইকেল কে

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

3
-1: @ মিশেলকে: আপনি যে স্ট্রোম্যানকে কল্পনা করেছেন তার সাথে আলোচনা করছেন, তবে বাস্তব জীবনের সাথে একেবারেই করার মতো কিছুই নেই। RESTful HTTP ব্যবহার করে। জেএসে কাউকে এসকিউএল লেখার দরকার নেই, এটিই রিস্টাল ইন্টারফেস। এছাড়াও RESTful এর অর্থ এই নয়, ডিবি ক্যোয়ারী সহ 1-থেকে -1 ম্যাপিং রয়েছে। আপনার উত্তরটি 1990 এর দশকে বৈধ হতে পারে তবে আমরা এখন 2012 সালে আছি।
ভেরটেক

0

মোবাইল ক্লায়েন্টগুলি সাধারণত পাওয়ার-, ব্যান্ডউইথ- এবং মেমরি-সীমাবদ্ধ থাকে। সার্ভারে তাদের জন্য পৃষ্ঠাগুলি রেন্ডার করা ভাল।

ডেস্কটপ ক্লায়েন্টদের জন্য আপনি পৃষ্ঠাটি ক্লায়েন্টে রেন্ডার করতে js + json প্রেরণ বিবেচনা করতে পারেন, এটিকে গতিশীলভাবে আপডেটযোগ্য, ইত্যাদি করুন etc.


অনুশীলনে তবে সঠিক বিপরীতটি প্রায়শই সত্য। JQuery মোবাইল প্রকল্পটি আসলে ক্লায়েন্ট-সাইড রেন্ডারিংয়ের ধারণার উপর ভিত্তি করে।
পয়েন্টি

@ পয়েন্ট: হ্যাঁ, এটি অন্যভাবে হতে পারে। নির্দিষ্ট পাতাগুলিতে কীভাবে নির্দিষ্ট পৃষ্ঠাগুলি আচরণ করে তা পরীক্ষা করা উচিত। বিকল্পের জন্য একটি লিঙ্ক সরবরাহ (যেমন 'মোবাইল' এবং 'ডেস্কটপ' সংস্করণ লিঙ্কগুলি) ব্যবহারকারীর পক্ষেও সহায়ক হতে পারে।
9:44

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

@ পয়েন্টযুক্ত জিকুয়ারি মোবাইল প্রকল্পটি ভয়াবহ কোডের একটি বড় স্তূপ যা ব্যবহার করা উচিত নয়। জনপ্রিয়তা! == মান
রায়নস

@ রায়নস আমরা খুব ভাল সাফল্যের সাথে জ্যাকারি মোবাইল ব্যবহার করছি। আপনি কি এমন কিছু জানেন যা আমরা করি না? ;)
মাইকেল কে

0

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


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

: Googlebot এক জাতীয় / AJAX এর ব্যাখ্যা করে বেশ কিছু সময়ের জন্য searchenginewatch.com/article/2122137/...
vartec

@ ভার্টেক: আমি মনে করি যে নিবন্ধটির মূল প্রেরণটি "এখন এজেএক্স এবং জাভাস্ক্রিপ্টের মাধ্যমে প্রয়োগ করা কিছু গতিশীল মন্তব্য পড়তে ও বুঝতে পারে।" আমার সন্দেহ এটি ডিসকাস এবং ফেসবুককে অন্তর্ভুক্ত করে তবে এটি আপনার কাস্টম এজাক্স সেটআপ নয়।
ওয়াট বার্নেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.