我正在处理的网站有一个ASP.NET webforms页面,该页面会回发并且有大约88KB的ViewState未压缩。是的,我意识到这是很多ViewState。我观察到任何回帖都会导致iPad浏览器崩溃并进入iPad主屏幕。页面上的任何其他链接工作正常。这篇文章也在iPhone 4上运行正常。当我将页面上的ViewState减少到大约48KB时,崩溃的问题就消失了。
这是我发现http://www.devcomments.com/GWT-Obfuscation-crashes-iPad-Safari-browser-at1047668.htm这个问题的唯一类似参考,尽管它没有引用GWT而不是ViewState。
是否存在与此问题相关的某些特定限制,或者它只是iPad浏览器中未记录的错误?
修改 在有了更多时间使用iPad并在网上阅读了一些内容后,如果感觉Safari被滥用,操作系统似乎会关闭Safari。操作系统认为Safari使用的RAM太多或CPU太多,我不确定这个Viewstate问题是哪一个。我是另一个崩溃的问题,根本没有Viewstate,但是在一个小的XHR之后经常发生崩溃,看起来当一些Javascript正在运行但很难说。在第二种情况下,禁用Javascript会阻止Safari崩溃,但也会使页面无效。
所以我想我的问题仍然是iPad 1 Safari中的实际限制以及人们如何针对这些崩溃限制进行测试?
答案 0 :(得分:2)
这听起来像是iPad上的Safari中的一个错误。
那就是说,这是一个非常多的观点。你真的需要它吗?
在我看来,一个很大的错误是MS决定默认启用所有视图状态。这意味着如果您在回发中更改文本框的背景颜色,控件将“记住”它之后的新背景颜色,而您根本不做任何事情来实现它。不那么粗糙,这意味着你得到的编程模型更像是一个Windows窗体应用程序,而且开发人员都很容易。
但要付出代价。 Web应用程序是客户端 - 服务器应用程序。它与本地运行的应用程序根本不同,也许在两种情况下,的编程模型都不应该相同...
如果您不知道您是否确实需要viewstate,请尝试在整个页面中禁用它。如果您发现某些特定控件需要它,请为所有其他控件禁用它,为必须拥有它的控件启用它,并再次为该页面启用它。我认为你会发现大多数(如果不是全部)你的大量视图状态实际上并没有被实际使用 - 除了占用带宽之外的任何东西。
答案 1 :(得分:1)
问题在于,当发布过多的表单内容时,就像巨大的Viewstate一样,Safari会因为占用太多资源或没有及时响应而被iOS关闭。我不是iOS专家,但它不是一个特定的Viewstate问题,它一般是iOS / Safari问题。
答案 2 :(得分:-1)
是时候用jQuery AJAX切换到ASP.Net MVC了。