Back to Question Center
0

ইনলাইন মিমি ভাল বা খারাপ?

1 answers:

আমি বর্তমানে স্যামল্ট থেকে Yii ফ্রেমওয়ার্ক থেকে স্যুইচ করেছি এবং একটি বহিরাগত ডেভেলপার আমার সাইট পুনর্নির্মাণ করছে.

এক জিনিস যা আমি লক্ষ্য করেছি যে প্রত্যেকবার তিনি AJAX / jQuery Yii উপায়ে আহ্বান করেন, এটি এম্বেড করে ওয়েবপেজে জাভাস্ক্রিপ্ট ইনলাইন প্রবেশ করান. এটি জাভাস্ক্রিপ্ট কোড ফুটার নীচের হয় বলে মনে হয় যদিও, এটি এখনও ইনলাইন.

সাধারনত, এটি মনে হয় যে ওয়েবলগের ভিতরে সেমিকোল কোড আরও ঘন ঘন হচ্ছে. আমি সবসময় মনে করেছি যে মিমোল্ট স্ক্রিপ্টগুলি যতটা সম্ভব, সেমাল্ট ফাইলগুলিতে স্থাপন করা উচিত - long term care insurance rates wisconsin. এই একটি আসছে "নতুন" প্রবণতা? অথবা আমি কি আলাদা ফাইলগুলিতে সেমাল্ট কোড রাখার চেষ্টা করব?

February 8, 2018

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

মনে রাখুন যে পৃষ্ঠা ডাউনলোডের সময় (অর্থাৎ, এইচটিএমএল) এবং সমস্ত রিসোর্স কল র্যাঙ্কিং প্রভাবিত মেট্রিক প্রভাবিত করে না (যদিও PageRank হিসাবে বা SERPs এটি কোন ব্যাপার না). বিন্দু, এটা এসইও জন্য একটি সাইট পারফরম্যান্স প্রভাবিত করে তবে এটি দেখায়.

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

আমার পৃষ্ঠার প্রায় অর্ধেক ডাউনলোড এবং ডাউনলোড করে যখন সমস্ত সম্পদ (CSS, js এবং এমনকি ছবি ) পৃষ্ঠায় ইনলাইন হয়. যেহেতু আমার কয়েকটি ব্যবহারকারী একাধিক পৃষ্ঠাগুলি দেখে, আমি এইসব সম্পদগুলির মধ্যে কিছু পৃষ্ঠা দর্শনগুলির মধ্যে ক্যাশ করা থেকে অনেক বেশি উপকৃত হব না.

আমার সাইট সাধারণত নয়. সর্বাধিক সাইটগুলি প্রতি সেশনে একাধিক পৃষ্ঠা এবং বড় চিত্রগুলি যা আমার প্রযুক্তির কম প্রযোজ্য হবে. এই প্রশ্নের কোন এক সঠিক সমাধান নেই; এটি সাইটে নির্ভর করে. আপনার ব্যবহারকারীদের সাধারণ আচরণের উপর ভিত্তি করে আপনাকে নিজের পরিমাপ করতে হবে .

এটি আপনার এইচটিএমএল ফাইলের মধ্যে জাভাস্ক্রিপ্টের জন্য অপরিহার্যভাবে খারাপ নয় কিন্তু আপনাকে অবশ্যই এটি একটি রায় প্রদান করতে হবে.

এটি হল খারাপ যদি আপনার বেশিরভাগ জাভাস্ক্রিপ্ট একাধিক পেজ জুড়ে ব্যবহৃত হয়. যে ক্ষেত্রে, জাভাস্ক্রিপ্ট একটি বহিরাগত, কম্প্রেস এবং cacheable ফাইল হতে হবে এবং আপনার সাইটে খুব ভারী ট্র্যাফিক যদি আপনি একটি CDN ব্যবহার করা উচিত.

যাইহোক, যদি আপনার একটি ক্ষুদ্র পরিমাণ জাভাস্ক্রিপ্ট থাকে তবে তা একটি বহিরাগত ফাইলের মধ্যে সংরক্ষণ করার সম্ভাবনাটি আপনাকে আসলে এটি পুনরুদ্ধারের জন্য একটি অতিরিক্ত HTTP অনুরোধ করতে হবে।. এই উদাহরণে আপনার পৃষ্ঠায় জাভাস্ক্রিপ্ট রাখতে আরো দক্ষ হতে হবে.

আবার আবার, যদি জাভাস্ক্রিপ্টের এই একই ছোট্ট স্নিপেটটি একাধিক পৃষ্ঠায় ব্যবহার করা হয় তবে ক্যাশে সুবিধা গ্রহণের জন্য এটি একটি বহিরাগত ফাইলে রাখার সুবিধাজনক হবে।.

পরিশেষে আপনাকে জাভাস্ক্রিপ্টের আকার ওভারহেডের উপরে অতিরিক্ত HTTP অনুরোধগুলি তৈরি করতে হবে. অধিকাংশ ক্ষেত্রে, একটি 'গড়' সাইটের জন্য, এটি সম্ভবত একটি বহিরাগত ফাইল এটি নির্বাণ একটি সম্পূর্ণ অনেক পারফর্ম করতে যাচ্ছে না.

আমি একটি Yii বিকাশকারী এবং আমি আপনাকে বলতে পারেন, যে Yii এর সঙ্গে কিছুই করার নেই . এটি সম্পূর্ণরূপে বিকাশকারী পক্ষের উপর, জাভাস্ক্রিপ্ট কোডটি আলাদা ফাইলে রাখলে তা এইচটিএমএল (ভিউ) পৃষ্ঠায় CClientScript :: registerScriptFile দিয়ে নিবন্ধন করে। পদ্ধতি বা এটি (এইচটিএমএল) কোড দেখতে সরাসরি রাখুন এবং CClientScript :: registerScript পদ্ধতি ব্যবহার করে এটি নিবন্ধন করুন.

আপনার জবাব অনুযায়ী, বেশিরভাগ (পেশাদার?) Yii ডেভেলপাররা প্রথম পদক্ষেপের জন্য দৃঢ়ভাবে ভোট দেয়, যা - যতটা সম্ভব জাভাস্ক্রিপ্ট কোডকে পৃথক ফাইল হিসাবে রাখা. সুতরাং, এটি অবশ্যই নয় কোডিং একটি নতুন প্রবণতা, বরং একটি খারাপ ডেভেলপার অনুশীলন. অন্তত, এটি কিভাবে Yii সম্প্রদায়ের মধ্যে দেখা যায়.

সম্পাদনা : আসলে, আমি সবচেয়ে গুরুত্বপূর্ণ যুক্তি সম্পর্কে ভুলে গেছি. Yii (এবং অন্যান্য বেশিরভাগ পেশাদার পিএইচপি ফ্রেমওয়ার্ক) MVC ডিজাইন প্যাটার্ন (প্রকৃতপক্ষে: স্থাপত্য প্যাটার্ন). এবং একই প্যাটার্ন ফ্রন্টএন্ডে ব্যবহার করা যেতে পারে: এইচটিএমএল কোড হল মডেল (ডেটা), সিএসএস ভিউ (ডেকোরেটর) এবং জাভাস্ক্রিপ্টটি কন্ট্রোলার. তাদের সব পৃথক ফাইল , . জেএস এবং . CSS ফাইল - minified, obsfucated এবং সেরা দৃশ্যকল্প gzipped.

আপনি যখন আপনার Yii অ্যাপ্লিকেশনটি তৈরি করবেন, তখন আপনি MVC প্যাটার্নটি ভাঙ্গবেন এবং একই ফাইলের সবকিছু রাখবেন. প্রশ্ন হল - এটা কি ভাল, তাই কি সুবিধাগুলি (কেউ না?) এবং যেখানে আপনি যে নেতৃত্ব হবে? আপনি একই বিতর্ক ব্যবহার করতে পারেন, জিজ্ঞাসা করার সময়, জাএস কোড ইনলাইন রাখা কি না?

এটি আসলে আপনার ডেভেলপ করা ওয়েবপৃষ্ঠার উদ্দেশ্য নির্ভর করে:

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

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

উত্তর আসলে কি করা হচ্ছে তা নির্ভর করে.

যদি আপনি ইনলাইন জাভাস্ক্রিপ্ট লক্ষ্য করেন যে ওয়েবসাইট জুড়ে ব্যবহৃত হয় (ই. ছ. একটি উইজেট যা ওয়েবসাইটের সমস্ত পৃষ্ঠায় শিরোনাম ভিতরে দেখায়) তারপর এটি একটি "সাধারণ" জাভাস্ক্রিপ্ট ফাইল এ সরানো উপযুক্ত হবে.

প্রকৃতপক্ষে, আমি যতটা জাভাস্ক্রিপ্ট একটি সাধারণ জাভাস্ক্রিপ্ট ফাইল হিসাবে সরানো এমনকি যদি এটি একটি একক পৃষ্ঠায় ব্যবহৃত হবে. আমি জাভাস্ক্রিপ্ট ফাইল জন্য শক্তিশালী ক্যাশে এবং কম্প্রেশন হেডার পাঠাতে সার্ভার কনফিগার হবে; যা পৃষ্ঠা (গুলি) এর আকার হ্রাস করে কিন্তু জাভাস্ক্রিপ্ট ফাইলের আকারকে অনেক বেশি বৃদ্ধি করে না.

অন্যদিকে, যদি জাভাস্ক্রিপ্ট শুধুমাত্র কনফিগারেশন অপশন / ইনিশিয়ালাইজেশন একটি গুচ্ছ হয়. ছ. :

  $ (ফাংশন)myplugin ({চিত্র: ["img1", "img2", "img3"]});
}); 

কোথা থেকে কোন কারণে এটি বাহ্যিক জাভাস্ক্রিপ্ট ফাইল (e. ছ. যখন ইমেজ পরামিতি ডাটাবেস থেকে আসছে) আমি ইনলাইন এ রাখা হবে. যে বলেন, আমি তৃতীয় পক্ষ প্লাগইন যে "অবিচ্ছিন্ন" (অথবা যেমন তাদের রূপান্তর) চয়ন করবে.

এই উত্তর চিহ্ন মিস. ইনলাইন ক্যাশে দেখুন .

যেহেতু Yii পিএইচপি কোডেড, আপনি পাবেন একটি সাধারণ (অথবা সম্ভবত অসাধারণ) পিএইচপি প্যাটার্ন যে ডেভেলপাররা মাঝে মাঝে সার্ভারে জাভাস্ক্রিপ্ট কোড তৈরি করতে পিএইচপি কোড লিখবে - কিছু রাষ্ট্র, শর্ত বা মান দ্বারা ভিত্তি করে সার্ভার - এবং তারপর ক্লায়েন্টকে এক ব্যাচ এ এটি সব পাঠান, ক্লায়েন্টকে ফাংশন চালানো এবং কয়েকটি কম্পিউটেশন বাদ দিয়ে যা সার্ভারে ইতিমধ্যে সম্পন্ন হয়েছে.

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

একটি WYSIWYG সম্পাদক ব্যবহার করে কিছু CMS সফটওয়্যারে একটি পৃষ্ঠা লেখার একটি শেষ ব্যবহারকারীর ক্ষেত্রে বিবেচনা করুন. কিভাবে এই ব্যবহারকারী পৃষ্ঠাতে নতুন কার্যকারিতা যোগ করতে হয় যখন তারা আপনার উৎস অ্যাক্সেস না. জেএস ফাইল সার্ভারে? তারা এইচটিএমএল ট্যাব পরিবর্তন করে এবং ইনলাইন জাভাস্ক্রিপ্ট ব্যবহার করে.

সকল ইনলাইন জাভাস্ক্রিপ্ট খারাপ নয়; কখনও কখনও onclick খুব ভাল হয়. একটি সাধারণ সুপারিশ হিসাবে, ইনলাইন জাভাস্ক্রিপ্ট লেখা এড়ানো এবং আপনি ভাল অভ্যাস গড়ে তুলতে আপনার উপায় হতে হবে.

রেফারেন্স:

  • ইনলাইন ক্যাশে
  • ইনলাইন ক্যাশে সঙ্গে গতিশীল জাভাস্ক্রিপ্ট অনুকূল
  • জাভাস্ক্রিপ্ট মধ্যে জাভাস্ক্রিপ্ট VMs ব্যাখ্যা - ইনলাইন ক্যাশে
  • কেন আমি ইনলাইন স্ক্রিপ্টিং এড়িয়ে চলা উচিত? (MainMa & user1389596 এর উত্তর দেখুন)

সাধারণভাবে ইনলাইন জেড কোড খারাপ, অন্যেরা আমার আগে আগে বলেছিল.

কিন্তু আমি একটি ব্যবহার ক্ষেত্রে মনে করি যেখানে ইনলাইন JS ভাল .

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