初始 SQL 数据库连接速度极慢



我开发了一个 asp.net mvc/angular 网站,它在我的本地机器上运行良好,但是当上传到我的 GoDaddy 共享主机帐户时,创建初始数据库连接需要很长时间,当用户第一次尝试登录网站时,我不知道如何修复(我知道我总是可以移动到更好的主机, 但我想看看是否有任何编码解决方案我可以先尝试,这不是我在我的代码中缺少的问题(。

这是我的网站:whesearchreporting.com

尝试使用任何随机登录登录,您会注意到大约需要 15-20 秒才能收到"无效登录"消息(注意:这只会影响第一个访问网站的人。 似乎一旦用户尝试连接,任何尝试访问该网站的添加用户都可以立即登录(。

以下是我到目前为止的观察结果:

  • 这仅影响初始登录(即初始数据库连接(。 进入后,您可以点击网站上的任何内容,甚至可以毫无问题地注销并重新登录。

  • 如果我在计算机 A 上登录(这将需要一些时间(,我几乎可以立即在计算机 B 上以其他用户身份登录。

  • 我已经读过 GoDaddy 使他们的共享主机服务器过载,所以我认为这是罪魁祸首,但不是积极的。

这是我的一些代码:

角度代码:

angular.module('dashboardApp', [])
.controller('loginController', function ($scope, $location, $window, LoginService) {
$scope.IsLoggedIn = false;
$scope.Message = '';
$scope.Submitted = false;
$scope.IsFormValid = false;
$scope.AccountData = {
Email: '',
Password: ''
};
//Check is the form valid or not. 
$scope.$watch('frmLogin.$valid', function (newVal) {            
$scope.IsFormValid = newVal;
});
$scope.Login = function () {
$scope.loading = true;
$scope.Submitted = true;
if ($scope.IsFormValid) {
LoginService.GetUser($scope.AccountData).then(function (d) {
if (d.data.Email != null) {
$scope.IsLoggedIn = true;
$window.location.href = "/Account/Dashboard";
}
else {
$scope.Message = "Invalid login";
$scope.loading = false;
}
});
}
};
})
.factory('LoginService', function($http) {
var fac = {};
fac.GetUser = function (d) {
return $http({
url: '/Home/UserLogin',
method: 'POST',
data: JSON.stringify(d),
headers: { 'content-type': 'application/json' }
});
};
return fac;
});

我的HomeController

public JsonResult UserLogin(Account account)
{
_accountService = new AccountService();
if (_accountService.Login(account) != null)
{
//valid login credentials.  Set cookie & return client data
FormsAuthentication.SetAuthCookie(account.Email, false);
}
else
{
//invalid login.  Delete client data
account = null;
}
return Json(account);
}

我的AccountRepository(Login方法(:

public string Login(Account a)
{
Account account = _accountRepository.GetAccountByEmail(a.Email);
a.Password = a.Password.Encrypt(a.Email);
if (account != null)
{
//password matches
if(account.Password == a.Password)
{
return account.Email;
}
else
{
return null;
}
}
return null;             
}

最后,我的数据库连接获取帐户信息:

private readonly Connection _conn;
public Account GetAccountByEmail(string email)
{
Account account;
using (MySiteEntities db = _conn.GetContext())
{
account = (from c in db.Accounts
where c.Email.Equals(email)
select c).FirstOrDefault();
}
return account;
}

知道为什么这个初始连接如此缓慢以及我可以做些什么来提高性能的任何想法吗?

谢谢

你知道 GoDaddy 是否正在使用 Windows Server 嗎?因为这听起来像是 IIS 的问题,所以它在一段时间不使用后会进入"休眠"状态。您可以更改此设置,但据我所知,您无法将其关闭。

最新更新