如何更快地加载网站的摘要内容?

时间:2015-05-22 16:23:30

标签: c# sql asp.net sql-server xml

我在我的网站的MasterPage上有一个方法,它加载了我的网站的摘要内容,如最新消息,最后帖子,访问量最多的帖子等等。所有数据都是从SQL数据库表加载的。这种方法每次用户访问一次(每天超过40000次),所以我每天有40000个不必要的数据库连接,因为这些数据通常每天最多改变4或5次。

我的问题是:优化页面加载速度并仅在更改时连接到数据库的解决方案是什么。

我有一个解决方案,但我不确定。仅在数据更改时,我可以连接到数据库并获取内容数据集并将其写入XML文件,然后从我的MasterPage中读取XML文件。

请告诉我有关我的解决方案的最佳解决方案和意见。

谢谢

2 个答案:

答案 0 :(得分:1)

我没有发现您的解决方案存在问题。我要添加的唯一内容是拥有页面:

  1. 读取xml文件(如果存在)
  2. 阅读后删除文件
  3. 使用ASP.Net缓存来缓存文件的内容
  4. 现在,MasterPage将首先检查文件是否存在,如果文件存在,则表明数据已更改,并且需要更新缓存。如果文件不存在,缓存中的数据是我们最新鲜的,可以使用。

    从缓存(服务器RAM)中提取数据非常快,比在文件中读取(文件IO)更快,这比连接到Db并从那里获取数据要快得多。

答案 1 :(得分:1)

我不知道您是如何检测到您的数据发生了变化,在我的情况下,Cache存储了DataTable,当用户添加或修改记录时,我设置了null DataTable我的DateTime.Now.AddMinutes(5d)变量,当我再次填充时,它也会因为DataTable dtJobs { get { if (Cache["dtJobs"] == null) Cache["dtJobs"] = Provider.Job.getAll(); return (DataTable)Cache["dtJobs"]; } set { if (value != null) Cache.Insert("dtJobs", value, null, DateTime.Now.AddMinutes(5d), System.Web.Caching.Cache.NoSlidingExpiration); else Cache.Remove("dtJobs"); } }

而每5分钟删除一次
@IBOutlet var textView : UITextView!
var placeholderLabel : UILabel!

override func viewDidLoad() {
    textView.delegate = self
    placeholderLabel = UILabel()
    placeholderLabel.text = "Enter optional text here..."
    placeholderLabel.font = UIFont.italicSystemFontOfSize(textView.font.pointSize)
    placeholderLabel.sizeToFit()
    textView.addSubview(placeholderLabel)
    placeholderLabel.frame.origin = CGPointMake(5, textView.font.pointSize / 2)
    placeholderLabel.textColor = UIColor(white: 0, alpha: 0.3)
    placeholderLabel.hidden = countElements(textView.text) != 0
}

func textViewDidChange(textView: UITextView) {
    placeholderLabel.hidden = countElements(textView.text) != 0
}