C# 页面加载速度慢?

C# 页面加载速度慢?,c#,ms-access,C#,Ms Access,当我在我的网站上输入用户名和密码时。如果用户名和密码是正确的,那么我有一个c#方法,在数据库加载页面上调用(它删除非必需的记录)。 如果有一条记录或100条记录,我仍然必须等待页面加载,直到该过程完成:( 我使用这个字符串加载所有文件,然后用它来比较文件 HttpContext.Current.Request.PhysicalApplicationPath; 然而,如果我使用静态路径,即:c:/images,则情况会变糟:( 那么,可能的解决方案是什么呢?使用Ajax并使其作为web服务异步 E

当我在我的网站上输入用户名和密码时。如果用户名和密码是正确的,那么我有一个c#方法,在数据库加载页面上调用(它删除非必需的记录)。 如果有一条记录或100条记录,我仍然必须等待页面加载,直到该过程完成:( 我使用这个字符串加载所有文件,然后用它来比较文件 HttpContext.Current.Request.PhysicalApplicationPath; 然而,如果我使用静态路径,即:c:/images,则情况会变糟:(
那么,可能的解决方案是什么呢?

使用Ajax并使其作为web服务异步


Edit1:我的意思是将页面加载中的代码移动到一个web服务方法中,然后在页面加载后从javascript调用该web服务,向其发送正确执行操作所需的信息,因此客户端看起来更具响应性-我假设所采取的操作不需要正确渲染R客户端代码,如果没有,可以考虑在Web服务返回之后更新页面。这可以手动完成,通过内置的Ajax工具包或通过一个库如jQuery。

< p>异步地启动记录删除:

然后,页面加载将在删除操作完成之前发生




编辑:既然您提到您正在使用Access DB,我想您并没有因为删除记录而浪费时间,而是因为其他一些操作(我怀疑是关闭DB,请参阅我对Amir答案的评论)。您现在应该做的是通过使用工具(请参阅)或“手动”进行基准测试,使用。无论如何,在尝试优化之前,请使用以下方法之一找出造成延迟的真正原因。

我觉得这不是异步问题。删除数据库中的100条甚至1000条记录不会花费几毫秒的时间。如果我怀疑,我会认为您没有正确设置索引。因此与其使用快速索引删除这些记录,它需要查看每个记录,看看是否匹配。

也许如果你发布一些代码,我们可以帮助你优化它,这取决于很多事情。数据库是本地托管的吗?服务器的规格是什么?你尝试过优化代码吗?@k Ivano,代码很简单,只需查询Ac访问D.B并检查文件名是否与delete匹配(使用OLEDB很简单)@capture:我使用的是Access DB,当前位于主机上,没有我没有尝试过优化代码。你能发布你用来执行删除的代码吗?如果你有一个“NOT IN”(不在),它的性能就不高。你是说我应该放[Ajax.AjaxMethod]吗(Ajax.HttpSessionStateRequirement.ReadWrite)]b4类?当我不使用sql查询数据库时,它就像一个flash(因为页面必须加载(XML,Ajax),最令人惊讶的是用户验证速度很快。但这就像骨骼一样。我现在做了索引,但它也有同样的问题。打开和(特别是)打开关闭Access数据库需要花费大量的时间。我最近在优化web应用程序的加载时间,而关闭与Access数据库的连接需要几百(!)毫秒,即使它只是一个很小的DB,打开它来读取一个很小的表的单个值。缓存这个值使页面加载时间下降了几个数量级。嗯,听起来有些不对劲。试着添加1000条记录,然后不使用C从数据库中删除它。这还需要很长时间吗?我不是Access方面的专家。@Heinzi-这就是连接池的好处。应用程序不应该打开到db的连接。它们应该已经存在。@实际的问题是,这个过程与页面加载非常并行,页面加载必须加载其他资源,如xml和其他内容,而这个过程会使它变慢,所以有没有办法使它变慢在后台结束此过程,而不必重新选择页面_loaditems/speed?@heinzi,谢谢,我现在这样做了,当我不使用sql查询数据库时,它就像一个闪存(因为页面必须加载(XML、AJAX)最令人惊讶的是,用户的验证速度很快。但这就像骨头一样…@safi:如果你精确地测量时间,那么在
myCommand.Execute
?@Heinzi:是的,在DB上执行命令时会消耗时间。完成后,页面加载速度会很快fast@safi当前位置如果你对此有把握的话(记录的删除必须在此时完成),然后异步执行该命令听起来确实像是一种方式…@Heinzi,关于在ASP.NET/C中异步执行该命令的任何提示?