ব্রাউজারগুলিতে এক্সএমএল প্রেরণের ত্রুটিগুলি কী এবং সেগুলি এক্সএসএলটি প্রয়োগ করতে দেয়?


14

প্রসঙ্গ

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

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

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

প্রশ্ন

আধুনিক ব্রাউজারগুলিতে একটি এক্সএমএল ফাইল নেওয়ার এবং এটি এক্সএমএলের মতো ঘোষিত কোনও সম্পর্কিত এক্সএসএল ফাইলের সাথে রূপান্তর করার ক্ষমতা রাখে <?xml-stylesheet href="demo.xslt" type="text/xsl"?>। ফায়ারফক্স 3 এটি করতে পারে। ইন্টারনেট এক্সপ্লোরার 8 এটিও করতে পারে।

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

এই কৌশলটির ত্রুটিগুলি কী কী?

আমি বেশ কয়েকটি সম্পর্কে ভেবেছিলাম, তবে এটি এই পরিস্থিতিতে প্রয়োগ হয় না:

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

1
কাঁচা এইচটিএমএল দেখতে কেমন তা বিচার্য নয়। ফায়ারব্যাগের মতো সরঞ্জামগুলি এটি আপনার জন্য ফর্ম্যাট করে।
জেরেমি হিলার

কোনও ব্রাউজারের এখনও এক্সএসএলটি 2.0 আছে? ব্যক্তিগতভাবে, আমি এক্সএসএলটি ১ এ ফিরে যেতে চাই না
ক্রিস্টোফার ক্রিউটজিগ

@ ক্রিস্টোফার ক্রিউটজিগ: আমি মনে করি সার্ভার-সাইড এক্সএসএলটি ২.০ সমর্থনটি খুব সীমাবদ্ধ রয়েছে (যদিও বিষয়টি সি #, পাইথন, পিএইচপি, এনজিনেক্স ngx_http_xslt_moduleবা চারটি ক্ষেত্রেই ছিল কিনা তা আমি ঠিক মনে করি না )। আমি অত্যন্ত সন্দেহ করি যে এক্সএসএলটি ২.০ এর ক্লায়েন্ট-সাইড সমর্থন আরও ভাল।
আর্সেনী মোরজেঙ্কো

@ মাইনমা ​​সার্ভারে স্যাকসন ব্যবহার করা আমাকে কীভাবে থামিয়ে দেয়, আমার সার্ভার রুবি, পিএইচপি, জাভা, সি #, বা x86 অ্যাসেম্বলিতে রচিত কিনা তা সম্পূর্ণ উপেক্ষা করে? সার্ভারটি এমন এক স্থান যেখানে আমি চাই সমস্ত ভাষা এবং পরিবেশ থেকে আমি অবাধে কোড মিশ্রিত করতে পারি - ধরে নিচ্ছি আমার কাছে কিছু পঙ্গু হোস্টিং সমাধান নেই যেখানে অবশ্যই আমি বাহ্যিক প্রোগ্রামগুলি কল করতে পারি না।
ক্রিস্টোফার ক্রিটজিগ

1
@ ক্রিস্টোফার ক্রিউটজিগ: আমি প্রায়শই এমন পরিবেশে কাজ করতাম যেখানে কেউ সিস্টেম অ্যাডমিনিস্ট্রেটারকে সার্ভারে যা খুশি প্রয়োজন তা মোতায়েন করতে বলতে পারে না। এটি স্যাকসনকে আমার পক্ষে ব্যবহার করা ব্যবহারিকভাবে অসম্ভব করে তুলেছিল।
আর্সেনি মরজেনকো

উত্তর:


27

ব্রাউজারগুলি ক্রমান্বয়ে এক্সএসএলটি রেন্ডার করতে পারে না

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

আপনি প্রগতিশীল রেন্ডারিং এবং চিত্র, সিএসএস এবং জেএসের প্রিফেকিং থেকে নিখোঁজ রয়েছেন।

প্রাথমিক লোড অন্য অনুরোধে বিলম্বিত

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

আপনার যদি বড় পৃষ্ঠা থাকে তবে এটি আরও খারাপ - প্রথম পয়েন্টটি দেখুন।

আপনি সম্ভবত কোনও ব্যান্ডউইথ সঞ্চয় করছেন না

এক্সএসএলটি নিজেই বেশ ভার্জোজ এবং কেবলমাত্র বর্তমান পৃষ্ঠায় ব্যবহৃত জিনিসগুলি নয়, সমস্ত বিরল ক্ষেত্রে পুরো সাইটের টেম্পলেট এবং যুক্তি থাকতে পারে।

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

ক্যাচগুলি ওভাররেটেড হয়

ব্রাউজারের ক্যাচগুলি দুর্দান্ত নয় :

ইয়াহু'র 40-60% ব্যবহারকারীর একটি খালি ক্যাশে অভিজ্ঞতা আছে এবং সমস্ত পৃষ্ঠাগুলির 20% views ভিউ খালি ক্যাশে সম্পন্ন হয়।

এবং মোবাইলে যেখানে বিলম্বিতা অতিরিক্ত অনুরোধগুলি সবচেয়ে ব্যয়বহুল করে তোলে, সেখানে ক্যাশেগুলি আরও খারাপ

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

gzip বিপরীত এক্সএসএলটি

এক্সএসএলটি-র মাধ্যমে সম্পাদিত বেশিরভাগ রূপান্তরগুলি আরও ভার্জোজ একটিতে সংক্ষিপ্ত মার্কআপ পরিবর্তন করে পুনরাবৃত্তি যুক্ত করতে নেমে আসে। তবে জিজিপ ফাইল থেকে পুনরাবৃত্তি / অপ্রয়োজনীয়তা অপসারণে দুর্দান্ত!

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

ক্লায়েন্টরা ধীর হতে পারে

এমনকি ক্যাশে থেকে লোডিংয়ের সর্বোত্তম কেস ধরে নেওয়া, ক্লায়েন্ট-সাইডে এক্সএসএলটি প্রসেসিং কেবল তখনই ব্যবহারকারীর সিপিইউ দ্রুত হয় এবং তাদের এক্সএসএলটি ইঞ্জিন দ্রুততর হয়।

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


দুর্দান্ত উত্তর! আমি আশা করি আমি এটি একাধিকবার ভোট দিতে পারতাম।
গৌরব

1
+1 বিশেষত gzipপয়েন্টের জন্য
নিকোল

3

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

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

ব্রাউজারগুলি জুড়ে যথাযথ সমর্থনের জন্য, xslt.js সহায়তা করতে পারে।

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


তবে আপনার ডেটা সঠিকভাবে প্রিসেট করতে আপনাকে ইতিমধ্যে "জসনল্ট" বিকাশ করতে হবে বা কেবল রেন্ডারিংয়ের জন্য ক্লায়েন্টের দিকটি বিকাশ করতে হবে, এটি ইতিমধ্যে XML / XSLT এর সাথে আসে না that
ওয়ালফ্র্যাট

2

কমপ্যাক্ট এক্সএমএল প্রেরণ করা এবং ক্লায়েন্টে ক্যাশেড এক্সএসএলটি রাখা আপনার ব্যান্ডউইথকে এমনকি সঞ্চয় করতে পারে।

আপনি স্মার্টফোনের মতো এক্সএসএলটি সমর্থন করে না এমন কোনও ব্রাউজার ছেড়ে যান। তবে আপনার যাহাই হউক না কেন এগুলির জন্য স্পিরিয়ালাইজড সংস্করণ তৈরি করা উচিত।


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

2
মেইনমা: হ্যাঁ, তবে আপনি সাধারণত স্মার্টফোনের জন্য একটি আলাদা এক্সএসএল প্রয়োগ করেন, কারণ স্ক্রিনের আকার একেবারেই আলাদা, আপনি ব্যবহার করতে পারবেন না :hover। ইত্যাদি
9000

1

প্রাথমিক সমস্যাটি হ'ল কেবল কয়েকটি ব্রাউজারই এটি ভালভাবে সমর্থন করেছিল তাই এটি সমর্থন করার জন্য মূলত একটি নতুন প্ল্যাটফর্ম তৈরি করা ঝামেলার পক্ষে মূল্যহীন ছিল না। অতিরিক্তভাবে IE এর পুরানো সংস্করণগুলি এটি ভালভাবে সমর্থন করে না এবং আমি যদি সঠিকভাবে স্মরণ করি তবে কমপক্ষে একটি আইই এর সমস্ত ধরণের মজাদার সমস্যা প্রদান করে একটি আলাদা এক্সএসএলটি উপভাষা পেয়েছিল।


1
যদি এই কয়েকটি ব্রাউজারগুলি বেশিরভাগ ব্যবহারকারীর দ্বারা ব্যবহৃত হয় তবে এটি সমস্যার জন্য উপযুক্ত হতে পারে।
ব্যবহারকারী 281377

এছাড়াও, এক্সএসএলটি-র জন্য ক্লায়েন্ট সিস্টেমগুলি কী স্তরের সমর্থন সরবরাহ করে তার উপর আপনার কোনও নিয়ন্ত্রণ নেই। যদি তারা কিছু মানহীন-অনুগত প্লাগইন বা কিছু ব্যবহার করে থাকে (আমি জানি, এটি প্রায়শই ঘটে না ...), তবে আপনার সাইটটি কাজ করবে না এবং এটি সমর্থন করা প্রায় অসম্ভব হয়ে যাবে।
TMN
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.