我一直在尝试优化JavaScript编码功能(在C#中)以提高其性能(总体上是为了提高企业Web应用程序的性能).我们尝试使用.NET HttpUtility.JavaScriptStringEncode但它没有编码我们的数据层预期的方式(并且更改数据层不在表上).
使用RedGate分析器工具,我确定我们的功能的最佳性能约占总页面负载的8%.当我使用.NET函数(在接受它的页面上)时,它占总页面加载的大约.08%.我们反映了.NET函数,看看他们正在使用什么样的魔法,当我将反射的代码复制到函数中并直接运行时,它的执行率大约为10%.
我很好奇为什么.如何通过不同的方式准备.NET功能以奖励这样的性能提升?
我提前道歉,但我不能粘贴我们正在使用的功能,但我认为这不会影响回答问题.
我有一个JavaScript函数,它发布了一个远程API,我正在编写单元测试.我想测试的方法是这样的:
var functionToTest = function(callback, fail) {
$.ajax({
url: "/myapi/",
type: "POST",
data: { one: 'one', two: 'two' },
accept: "application/json",
contentType: "application/json"
}).done(function(x) {
log = generateLogMessage('Success');
callback(log);
}).fail(function(x, s, e) {
log = generateLogMessage('Fail');
fail(log);
});
}
Run Code Online (Sandbox Code Playgroud)
我有一个单元测试(在QUnit中利用Sinon.js)测试在请求成功时正确调用回调:
QUnit.test('Test that the thing works', function () {
var server = this.sandbox.useFakeServer();
server.respondWith(
'POST',
'/myapi/',
[
200,
{'Content-Type': 'application/json'},
'{"Success":true}'
]
);
var callback = this.spy();
functionToTest(callback, callback);
server.respond();
QUnit.ok(callback.calledWith(generateLogMessage('Success')));
});
Run Code Online (Sandbox Code Playgroud)
此测试有效,但无论请求主体是什么,它都会成功返回.我想要做的只是假冒服务器响应请求正文{ one: 'one', two: 'two' }