我在我的网站的MasterPage上有一个方法,它加载了我的网站的摘要内容,如最新消息,最后帖子,访问量最多的帖子等等。所有数据都是从SQL数据库表加载的。这种方法每次用户访问一次(每天超过40000次),所以我每天有40000个不必要的数据库连接,因为这些数据通常每天最多改变4或5次。
我的问题是:优化页面加载速度并仅在更改时连接到数据库的解决方案是什么。
我有一个解决方案,但我不确定。仅在数据更改时,我可以连接到数据库并获取内容数据集并将其写入XML文件,然后从我的MasterPage中读取XML文件。
请告诉我有关我的解决方案的最佳解决方案和意见。
谢谢
答案 0 :(得分:1)
我没有发现您的解决方案存在问题。我要添加的唯一内容是拥有页面:
现在,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");
}
}
@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
}