विफल रहता है तो स्थानीय फॉलबैक मेरे रीढ़ की हड्डी में, मुझे प्रत्येक आवश्यक फ़ाइल के लिए फ़ॉलबैक प्रदान करने की आवश्यकता होती है, यदि सीडीएन उन्हें वितरित करता है।RequJS: यदि सीडीएन
मैं बहुत तरह require.onError
अधिलेखन की कोशिश की है:
require.onError = function (err) {
if (err.requireType === 'timeout') {
var url = err.requireModules;
if (!!~url.indexOf("jquery/"))
console.warn("CDN timed out, falling back to local jQuery.js")
require(["libs/jquery"]);
return;
if (!!~url.indexOf("jqueryui/"))
console.warn("CDN timed out, falling back to local jQueryUI.js")
require(["libs/jqueryui"]);
return;
if (!!~url.indexOf("underscore"))
console.warn("CDN timed out, falling back to local underscore.js")
require(["libs/underscore"]);
return;
if (!!~url.indexOf("backbone"))
console.warn("CDN timed out, falling back to local backbone.js")
require(["libs/backbone"]);
return;
}
}
समस्या यह है कि इस अतुल्यकालिक रूप से वापस आने फ़ाइलें लोड होगा। मुझे इन फ़ाइलों को क्रम में लोड करने की आवश्यकता है, बस मूल आवश्यकता कथन की तरह, जहां मैं order!
प्लगइन का उपयोग करता हूं।
ओवरराइड onError
के साथ: जब सीडीएन लोड करने में विफल रहता है, तो फ़ॉलबैक लोड शुरू हो जाता है, लेकिन इसके लिए इंतजार नहीं किया जाता है। यह एक समस्या प्रस्तुत करता है क्योंकि स्क्रिप्ट को उनकी निर्भरताओं के आधार पर लोड करने का आदेश दिया जाता है। यहाँ मेरी मूल require
बयान पर एक नज़र है, कि CDN पर निर्भर करता है:
require([
"order!http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js",
"order!http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js",
"order!http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min.js",
"order!http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js",
"order!utils/date",
"order!core/core",
"order!core/errors",
"order!core/constants"
], function() {
...
}
दोनों CDN के भयानक नहीं हैं, वे केवल ज्यादा से ज्यादा एक मिनट के बारे में एक खिड़की के लिए एक दिन में एक बार औसतन असफल, और स्वतंत्र हैं। भले ही, मुझे लगता है कि यह हल करने के लिए एक दिलचस्प समस्या है। उपयोगकर्ता अनुभव को संरक्षित करने के लिए, यदि आपके पास एक आदर्श सीडीएन है, तो भी फ़ॉलबैक होने के लिए हमेशा अच्छा होता है। क्या आप किसी अन्य सीडीएन का सुझाव दे सकते हैं? – Austin
मैं समझता हूं कि आप कहां से आ रहे हैं, लेकिन मैं इस तरह की किसी भी चीज़ की खरीद करने की स्थिति में नहीं हूं, पर्याप्त प्रमाण प्रदान किए बिना कि मैंने वर्तमान प्रणाली को काम करने के लिए सबकुछ करने की कोशिश की है। इसके अलावा, मुझे किसी भी प्रोग्रामिंग की सराहना में दिलचस्पी है, और मैं यह विशेष समाधान कई लोगों के लिए उपयोगी साबित कर सकता हूं, क्योंकि कई डेवलपर्स (विशेष रूप से फ्रीलांसर) सीडीएन के लिए भुगतान का उपयोग नहीं करते हैं। – Austin
सीडीएन अब असली सस्ता है ($ 2 से $ 3 प्रति माह) ... मैं AccuWebHosting.Com सीडीएन का उपयोग कर रहा हूं और कभी भी डाउनटाइम का अनुभव नहीं किया। खैर, यदि एक सर्वर सीडीएन में विफल रहता है, तो सामग्री को तुरंत निकटतम उपलब्ध पीओपी से वितरित किया जाता है ... और आमतौर पर एक अच्छी सीडीएन में 40 से 50 पीओपी होते हैं ... –