0

我在 vb.net 中使用带有文字和中继器控制的 Jquery 插件。不幸的是,插件的性能非常慢,我将其范围缩小到以下代码:(我在 html 页面中使用了文字)

Sub GetAllItems()
Dim dt As DataTable = altharaaonline.DXNitems.GetAllDXNitems()
Dim Lt_Body As String = ""
For i = 0 To dt.Rows.Count - 1
    Lt_Body += "<li class=""item mix_row""><div class=""outer box""> <a href=""#"" class=""product-image""><img src=""" & dt.Rows(i).Item("ImgUrl").ToString & """ alt=""" & dt.Rows(i).Item("ProductNameEnglish").ToString & """ width=""117px"" height=""165px"" /></a><div class=""ic_caption""><h2 class=""product-name""><a href=""Item.aspx?id=" & dt.Rows(i).Item("Id").ToString & """ title=""" & dt.Rows(i).Item("ProductNameEnglish").ToString & """ </a></h2><div class=""actions""><button style=""display:none;"" type=""button"" title=""Add to Cart"" class=""button btn-cart""> <span> <span>Add to Cart</span> </span> </button><a rel=""example_group"" href=""./images/zoom1.jpg"" class=""fancybox quickllook"" id=""fancybox170"">Quick look</a><div class=""price-box""> <span class=""regular-price""> <span class=""price"">" & dt.Rows(i).Item("SellingPrice").ToString & "</span> </span> </div></div></div></div></li>"
Next
Literal1.Text = Lt_Body

End Sub

虽然 Jquery 代码是:

typeof YUI!="undefined"&&(YUI._YUI=YUI);var YUI=function(){var a=0,b=this,c=arguments,d=c.length,e=function(a,b){return a&&a.hasOwnProperty&&a instanceof b},f=typeof YUI_config!="undefined"&&YUI_config;e(b,YUI)?(b._init(),YUI.GlobalConfig&&b.applyConfig(YUI.GlobalConfig),f&&b.applyConfig(f),d||b._setup()):b=new YUI;if(d){for(;a<d;a++)b.applyConfig(c[a]);b._setup()}return b.instanceOf=e,b};(function(){var a,b,c="3.4.1",d=".",e="http://yui.yahooapis.com/",f="yui3-js-enabled",g=function(){},h=Array.prototype.slice,i={"io.xdrReady":1,"io.xdrResponse":1,"SWF.eventHandler":1},j=typeof window!="undefined",k=j?window:null,l=j?k.document:null,m=l&&l.documentElement,n=m&&m.className,o={},p=(new Date).getTime(),q=function(a,b,c,d){a&&a.addEventListener?a.addEventListener(b,c,d):a&&a.attachEvent&&a.attachEvent("on"+b,c)},r=function(a,b,c,d){if(a&&a.removeEventListener)try{a.removeEventListener(b,c,d)}catch(e){}else a&&a.detachEvent&&a.detachEvent("on"+b,c)},s=function(){YUI.Env.windowLoaded=!0,YUI.Env.DOMReady=!0,j&&r(window,"load",s)},t=function(a,b){var c=a.Env._loader;return c?(c.ignoreRegistered=!1,c.onEnd=null,c.data=null,c.required=[],c.loadType=null):(c=new a.Loader(a.config),a.Env._loader=c),YUI.Env.core=a.Array.dedupe([].concat(YUI.Env.core,["loader-base","loader-rollup","loader-yui3"])),c},u=function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c])},v={success:!0};m&&n.indexOf(f)==-1&&(n&&(n+=" "),n+=f,m.className=n),c.indexOf("@")>-1&&(c="3.3.0"),a={applyConfig:function(a){a=a||g;var b,c,d=this.config,e=d.modules,f=d.groups,h=d.rls,i=this.Env._loader;for(c in a)a.hasOwnProperty(c)&&(b=a[c],e&&c=="modules"?u(e,b):f&&c=="groups"?u(f,b):h&&c=="rls"?u(h,b):c=="win"?(d[c]=b.contentWindow||b,d.doc=d[c].document):c!="_yuid"&&(d[c]=b));i&&i._config(a)},_config:function(a){this.applyConfig(a)},_init:function(){var a,b=this,d=YUI.Env,f=b.Env,g;b.version=c;if(!f){b.Env={core:["get","features","intl-base","yui-log","yui-later","loader-base","loader-rollup","loader-yui3"],mods:{},versions:{},base:e,cdn:e+c+"/build/",_idx:0,_used:{},_attached:{},_missed:[],_yidx:0,_uidx:0,_guidp:"y",_loaded:{},_BASE_RE:/(?:\?(?:[^&]*&)*([^&]*))?\b(simpleyui|yui(?:-\w+)?)\/\2(?:-(min|debug))?\.js/,parseBasePath:function(a,b){var c=a.match(b),d,e;return c&&(d=RegExp.leftContext||a.slice(0,a.indexOf(c[0])),e=c[3],c[1]&&(d+="?"+c[1]),d={filter:e,path:d}),d},getBase:d&&d.getBase||function(c){var d=l&&l.getElementsByTagName("script")||[],e=f.cdn,g,h,i,j;for(h=0,i=d.length;h<i;++h){j=d[h].src;if(j){g=b.Env.parseBasePath(j,c);if(g){a=g.filter,e=g.path;break}}}return e}},f=b.Env,f._loaded[c]={};if(d&&b!==YUI)f._yidx=++d._yidx,f._guidp=("yui_"+c+"_"+f._yidx+"_"+p).replace(/\./g,"_");else if(YUI._YUI){d=YUI._YUI.Env,f._yidx+=d._yidx,f._uidx+=d._uidx;for(g in d)g in f||(f[g]=d[g]);delete YUI._YUI}b.id=b.stamp(b),o[b.id]=b}b.constructor=YUI,b.config=b.config||{win:k,doc:l,debug:!0,useBrowserConsole:!0,throwFail:!0,bootstrap:!0,cacheUse:!0,fetchCSS:!0,use_rls:!1,rls_timeout:2e3},YUI.Env.rls_disabled&&(b.config.use_rls=!1),b.config.lang=b.config.lang||"en-US",b.config.base=YUI.config.base||b.Env.getBase(b.Env._BASE_RE);if(!a||!"mindebug".indexOf(a))a="min";a=a?"-"+a:a,b.config.loaderPath=YUI.config.loaderPath||"loader/loader"+a+".js"},_setup:function(a){var b,c=this,d=[],e=YUI.Env.mods,f=c.config.core||[].concat(YUI.Env.core);for(b=0;b<f.length;b++)e[f[b]]&&d.push(f[b]);c._attach(["yui-base"]),c._attach(d),c.Loader&&t(c)},applyTo:function(a,b,c){if(b in i){var d=o[a],e,f,g;if(d){e=b.split("."),f=d;for(g=0;g<e.length;g=g+1)f=f[e[g]],f||this.log("applyTo not found: "+b,"warn","yui");return f.apply(d,c)}return null}return this.log(b+": applyTo not allowed","warn","yui"),null},add:function(a,b,c,d){d=d||{};var e=YUI.Env,f={name:a,fn:b,version:c,details:d},g,h,i=e.versions;e.mods[a]=f,i[c]=i[c]||{},i[c][a]=f;for(h in o)o.hasOwnProperty(h)&&(g=o[h].Env._loader,g&&(g.moduleInfo[a]||g.addModule(d,a)));return this},_attach:function(a,b){var c,d,e,f,g,h,i,j=YUI.Env.mods,k=YUI.Env.aliases,l=this,m,n=l.Env._loader,o=l.Env._attached,p=a.length,n,q=[];for(c=0;c<p;c++)d=a[c],e=j[d],q.push(d),n&&n.conditions[d]&&l.Object.each(n.conditions[d],function(a){var b=a&&(a.ua&&l.UA[a.ua]||a.test&&a.test(l));b&&q.push(a.name)});a=q,p=a.length;for(c=0;c<p;c++)if(!o[a[c]]){d=a[c],e=j[d];if(k&&k[d]){l._attach(k[d]);continue}if(!e)n&&n.moduleInfo[d]&&(e=n.moduleInfo[d],b=!0),b||d.indexOf("skin-")===-1&&d.indexOf("css")===-1&&(l.Env._missed.push(d),l.Env._missed=l.Array.dedupe(l.Env._missed),l.message("NOT loaded: "+d,"warn","yui"));else{o[d]=!0;for(m=0;m<l.Env._missed.length;m++)l.Env._missed[m]===d&&(l.message("Found: "+d+" (was reported as missing earlier)","warn","yui"),l.Env._missed.splice(m,1));f=e.details,g=f.requires,h=f.use,i=f.after;if(g)for(m=0;m<g.length;m++)if(!o[g[m]]){if(!l._attach(g))return!1;break}if(i)for(m=0;m<i.length;m++)if(!o[i[m]]){if(!l._attach(i,!0))return!1;break}if(e.fn)try{e.fn(l,d)}catch(r){return l.error("Attach error: "+d,r,d),!1}if(h)for(m=0;m<h.length;m++)if(!o[h[m]]){if(!l._attach(h))return!1;break}}}return!0},use:function(){var a=h.call(arguments,0),b=a[a.length-1],c=this,d=0,e,f=c.Env,g=!0;c.Lang.isFunction(b)?a.pop():b=null,c.Lang.isArray(a[0])&&(a=a[0]);if(c.config.cacheUse){while(e=a[d++])if(!f._attached[e]){g=!1;break}if(g)return!a.length,c._notify(b,v,a),c}return c._loading?(c._useQueue=c._useQueue||new c.Queue,c._useQueue.add([a,b])):c._use(a,function(c,d){c._notify(b,d,a)}),c},_notify:function(a,b,c){if(!b.success&&this.config.loadErrorFn)this.config.loadErrorFn.call(this,this,a,b,c);else if(a)try{a(this,b)}catch(d){this.error("use callback error",d,c)}},_use:function(a,b){this.Array||this._attach(["yui-base"]);var d,e,f,g,h=this,i=YUI.Env,j=i.mods,k=h.Env,l=k._used,m=i._loaderQueue,n=a[0],o=h.Array,p=h.config,q=p.bootstrap,r=[],s=[],u=!0,v=p.fetchCSS,w=function(a,b){if(!a.length)return;o.each(a,function(a){b||s.push(a);if(l[a])return;var d=j[a],e,f;d?(l[a]=!0,e=d.details.requires,f=d.details.use):i._loaded[c][a]?l[a]=!0:r.push(a),e&&e.length&&w(e),f&&f.length&&w(f,1)})},x=function(c){var d=c||{success:!0,msg:"not dynamic"},e,f,g=!0,i=d.data;h._loading=!1,i&&(f=r,r=[],s=[],w(i),e=r.length,e&&r.sort().join()==f.sort().join()&&(e=!1)),e&&i?(h._loading=!1,h._use(a,function(){h._attach(i)&&h._notify(b,d,i)})):(i&&(g=h._attach(i)),g&&h._notify(b,d,a)),h._useQueue&&h._useQueue.size()&&!h._loading&&h._use.apply(h,h._useQueue.next())};return n==="*"?(u=h._attach(h.Object.keys(j)),u&&x(),h):(q&&h.Loader&&a.length&&(e=t(h),e.require(a),e.ignoreRegistered=!0,e.calculate(null,v?null:"js"),a=e.sorted),w(a),d=r.length,d&&(r=h.Object.keys(o.hash(r)),d=r.length,h.log("Modules missing: "+r+", "+r.length,"info","yui")),q&&d&&h.Loader?(h._loading=!0,e=t(h),e.onEnd=x,e.context=h,e.data=a,e.ignoreRegistered=!1,e.require(a),e.insert(null,v?null:"js")):d&&h.config.use_rls&&!YUI.Env.rls_enabled?(i._rls_queue=i._rls_queue||new h.Queue,g=function(a,b){var c=function(b){x(b),a.rls_advance()},d=a._rls(b);d?(a.rls_oncomplete(function(a){c(a)}),a.Get.script(d,{data:b,timeout:a.config.rls_timeout,onFailure:a.rls_handleFailure,onTimeout:a.rls_handleTimeout})):c({success:!0,data:b})},i._rls_queue.add(function(){i._rls_in_progress=!0,h.rls_callback=b,h.rls_locals(h,a,g)}),!i._rls_in_progress&&i._rls_queue.size()&&i._rls_queue.next()()):q&&d&&h.Get&&!k.bootstrapped?(h._loading=!0,f=function(){h._loading=!1,m.running=!1,k.bootstrapped=!0,i._bootstrapping=!1,h._attach(["loader"])&&h._use(a,b)},i._bootstrapping?(h.log("Waiting for loader","info","yui"),m.add(f)):(i._bootstrapping=!0,h.log("Fetching loader: "+p.base+p.loaderPath,"info","yui"),h.Get.script(p.base+p.loaderPath,{onEnd:f}))):(u=h._attach(a),u&&x()),h)},namespace:function(){var a=arguments,b=this,c=0,e,f,g;for(;c<a.length;c++){g=a[c];if(g.indexOf(d)){f=g.split(d);for(e=f[0]=="YAHOO"?1:0;e<f.length;e++)b[f[e]]=b[f[e]]||{},b=b[f[e]]}else b[g]=b[g]||{}}return b},log:g,message:g,dump:function(a){return""+a},error:function(a,b,c){var d=this,e;d.config.errorFn&&(e=d.config.errorFn.apply(d,arguments));if(d.config.throwFail&&!e)throw b||new Error(a);return d.message(a,"error"),d},guid:function(a){var b=this.Env._guidp+"_"+ ++this.Env._uidx;return a?a+b:b},stamp:function(a,b){var c;if(!a)return a;a.uniqueID&&a.nodeType&&a.nodeType!==9?c=a.uniqueID:c=typeof a=="string"?a:a._yuid;if(!c){c=this.guid();if(!b)try{a._yuid=c}catch(d){c=null}}return c},destroy:function(){var a=this;a.Event&&a.Event._unload(),delete o[a.id],delete a.Env,delete a.config}},YUI.prototype=a;for(b in a)a.hasOwnProperty(b)&&(YUI[b]=a[b]);YUI._init(),j?q(window,"load",s):s(),YUI.Env.add=q,YUI.Env.remove=r,typeof exports=="object"&&(exports.YUI=YUI)})(),YUI.add("yui-base",function(a){function m(a,b,c){var d,e;b||(b=0);if(c||m.test(a))try{return k.slice.call(a,b)}catch(f){e=[];for(d=a.length;b<d;++b)e.push(a[b]);return e}return[a]}function n(){this._init(),this.add.apply(this,arguments)}var b=a.Lang||(a.Lang={}),c=String.prototype,d=Object.prototype.toString,e={"undefined":"undefined",number:"number","boolean":"boolean",string:"string","[object Function]":"function","[object RegExp]":"regexp","[object Array]":"array","[object Date]":"date","[object Error]":"error"},f=/\{\s*([^|}]+?)\s*(?:\|([^}]*))?\s*\}/g,g=/^\s+|\s+$/g,h=a.config.win,i=h&&(!!h.MooTools||!!h.Prototype);b.isArray=!i&&Array.isArray||function(a){return b.type(a)==="array"},b.isBoolean=function(a){return typeof a=="boolean"},b.isFunction=function(a){return b.type(a)==="function"},b.isDate=function(a){return b.type(a)==="date"&&a.toString()!=="Invalid Date"&&!isNaN(a)},b.isNull=function(a){return a===null},b.isNumber=function(a){return typeof a=="number"&&isFinite(a)},b.isObject=function(a,c){var d=typeof a;return a&&(d==="object"||!c&&(d==="function"||b.isFunction(a)))||!1},b.isString=function(a){return typeof a=="string"},b.isUndefined=function(a){return typeof a=="undefined"},b.trim=c.trim?function(a){return a&&a.trim?a.trim():a}:function(a){try{return a.replace(g,"")}catch(b){return a}},b.trimLeft=c.trimLeft?function(a){return a.trimLeft()}:function(a){return a.replace(/^\s+/,"")},b.trimRight=c.trimRight?function(a){return a.trimRight()}:function(a){return a.replace(/\s+$/,"")},b.isValue=function(a){var c=b.type(a);switch(c){case"number":return isFinite(a);case"null":case"undefined":return!1;default:return!!c}},b.type=function(a){return e[typeof a]||e[d.call(a)]||(a?"object":"null")},b.sub=function(a,c){return a.replace?a.replace(f,function(a,d){return b.isUndefined(c[d])?a:c[d]}):a},b.now=Date.now||function(){return(new Date).getTime()};var j=a.Lang,k=Array.prototype,l=Object.prototype.hasOwnProperty;a.Array=m,m.dedupe=function(a){var b={},c=[],d,e,f;for(d=0,f=a.length;d<f;++d)e=a[d],l.call(b,e)||(b[e]=1,c.push(e));return c},m.each=m.forEach=k.forEach?function(b,c,d){return k.forEach.call(b||[],c,d||a),a}:function(b,c,d){for(var e=0,f=b&&b.length||0;e<f;++e)e in b&&c.call(d||a,b[e],e,b);return a},m.hash=function(a,b){var c={},d=b&&b.length||0,e,f;for(e=0,f=a.length;e<f;++e)e in a&&(c[a[e]]=d>e&&e in b?b[e]:!0);return c},m.indexOf=k.indexOf?function(a,b){return k.indexOf.call(a,b)}:function(a,b){for(var c=0,d=a.length;c<d;++c)if(c in a&&a[c]===b)return c;return-1},m.numericSort=function(a,b){return a-b},m.some=k.some?function(a,b,c){return k.some.call(a,b,c)}:function(a,b,c){for(var d=0,e=a.length;d<e;++

可以在此页面的“新产品”部分查看正在做什么的示例。http://www.palmmart.net/default.aspx

我也使用了中继器,它的速度也一样。

当我在没有 IIS 的 html 中打开它时,它工作得非常顺利,如下所示:http: //palmmart.net/main.html

4

2 回答 2

1

从外观上看,您不仅没有使用 jQuery(您正在使用 YUI),而且看起来前端并不是您的问题。我的猜测是在服务器上连接一堆长字符串会大大降低您的网站速度。

尝试使用 aStringBuilder代替:

Dim sb As New System.Text.StringBuilder
Dim dt As DataTable = altharaaonline.DXNitems.GetAllDXNitems()
For i = 0 To dt.Rows.Count - 1
    sb.Append("huge long string")
Next

Literal1.Text = sb.ToString()
于 2012-06-01T21:28:52.733 回答
1

您发布的代码不是 jQuery,而是 YUI。

YUI 是另一个 Javascript 库,它做了很多与 jQuery 相同的事情。您发布的 JS 代码是整个 YUI 库的源代码。

在您的网站上同时运行 YUI 和 jQuery 很好,但完全没有必要,而且可能会很慢。

最重要的是,当我加载您的页面时,我还看到您已经包含了原型库。这是另一个库,其功能与 jQuery 几乎相同。同样,在您的站点中有多个库在做同样的事情(并且可能相互冲突)是没有意义的。

然而,话虽如此,您网站上真正的性能问题根本不是 Javascript。这是您提供的大量海量图像。在浏览器中使用不错的开发工具包(例如 Chrome Dev Tools 或 Firefox 的 Firebug)打开您的页面,然后查看页面加载图表——您会发现您的一些图片需要 5、10 甚至 20 秒才能下载. 其中一些的大小超过一兆。难怪事情进展得如此缓慢。

这是你问题的很大一部分。解决这个问题,事情就会大大改善。

您还希望摆脱多个库 - 可能坚持使用 jQuery,但摆脱其他库。

您的代码也存在其他问题,但我会将这些问题留给一个单独的问题,或者我可能整晚都在这里输入这个答案。

于 2012-06-01T21:34:05.193 回答