公司代理服务器的Web应用程序性能

时间:2013-11-08 19:57:24

标签: javascript jquery html asp.net proxy

我有一个奇怪的问题,我已成功缩小到我公司的代理服务器设置。但是,当我与IT团队会面时,我无法弄清楚发生了什么,并希望提出一些建议。

我有一个ASP.NET应用程序,它显示一个用于键入不同产品数量的表。因为有很多行,所以我有一个jQuery脚本,允许用户使用箭头,选项卡导航,并像在Excel中一样输入键。

将站点部署到Intranet上的Web服务器时会出现问题。虽然该网站在我的PC上使用IE本地运行良好,但一旦发布就完全无法操作。我已经将问题缩小到检查/取消选中计算机上的代理服务器设置。

下表显示了在网格中按下20次右箭头键时脚本的累积执行时间(以毫秒为单位)。如您所见,此问题仅影响Internet Explorer,并且仅在启用代理时启用。这种行为可以在我尝试过的任何其他机器上重现。该页面将无法与代理一起使用,因此我无法列出时间。

Performance Table

我注意到IE 9在代理与基于视觉外观的非代理上的CSS文件略有不同。当我比较代码时,我注意到不同的CSS被发送到浏览器。我尝试更改脚本文件名,以便代理服务器没有提供过时的版本,但没有帮助。

代理CSS示例

#entry_grid TD {
BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 75px; TEXT-ALIGN: center; PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MAX-WIDTH: 75px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px}

非代理CSS示例

#entry_grid td {
padding: 2px 0px; text-align: center; border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-right-width: 1px; border-bottom-width: 1px; border-right-style: solid; border-bottom-style: solid; min-width: 75px; max-width: 75px;}

一些奇怪的事情,比如将文本大写或将填充速记更改为更详细的版本。不确定这是否可能与其他资源有关,比如jQuery库。然而,脚本本身是相同的。对于那些感兴趣的人,导致问题的代码是:

function convertInput(e) {
//Assign the active CSS class to the selected cell
$('.active').removeClass('active');
$(e).addClass('active');

//Ignore any elements which do not have an 'ID' tag since these should not be edited
var attr = $(e).attr('id');
if (typeof attr !== 'undefined' && attr !== false) {
    //Get the text value
    var text = $(e).text();
    $(e).text('');

    lastbox = activebox;
    //Create an inputbox and place the original value in there
    $('<input type="text" />').appendTo($(e)).val(text).select().blur(
        function () {
            var orig = $(this);
            var parent = $(this).parent();

            var newText = orig.val();
            parent.text(newText);
            updateMonthTotal(parent);
            parent.find('input').remove();
        });
}
else {
    //If we land on an non-updateable field, find the only input box on the table
    //and grab its value

    var elem = $('#allocation_entry_grid tr td:eq(' + lastbox + ') input');
    var newText = $(elem).val();
    //Assign it to the underlying TD and remove the textbox
    $(elem).parent().text(newText)
    $(elem).remove();
};

最后,踢球者认为代理设置应该不重要,因为已经排除了整个内部网!我在下面的屏幕截图中隐藏了真实姓名,但它确实有一个应该排除我网站的条目

enter image description here

这里发生了什么?为什么只有IE,还有其他我可以做的测试吗?

修改

我已经在评论中提到了这一点,但在使用Wireshark检查流量时,用户代理会根据代理设置在IE中进行更改:

使用代理 User-Agent:Mozilla / 5.0(兼容; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0)

没有代理 User-Agent:Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 6.1; WOW64; Trident / 5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0 ; InfoPath.3; .NET4.0C; .NET4.0E)

在这两种情况下,代理服务器都有0个流量。我可以通过切换此复选框来确认这是在我通过此计算机访问的任何网站上发生的。

1 个答案:

答案 0 :(得分:0)

2条建议: 1.使用IE Tester检查这是否仅发生在IE9或所有IE上 2.如果您认为IE在代理/非代理之间的行为不同,请尝试将css的不同部分从外部css文件移动到您的页面。 3.如果移动css / js解决了你的问题,那么你可以尝试使用!important覆盖css部分的问题部分。

让我知道这对你有用。

由于你的作品看起来不像可以张贴在jsfiddle,所以我只能拍摄盲人伴侣。祝你好运。