两个有相同缓存名的网站运行于同一服务器有无影响(Cache作用范围)
为节省服务器资源和加快网页显示速度,经常会把一些实时性要求高的数据缓存起来。如果两个网站用了同一个缓存名,把它们运行在同一服务器,它的值会不会相互覆盖?如果会,那么程序不就会出现取错数据的错误。我们知道,变量、方法都有作用范围,同样Cache也有作用范围,理论上来讲,不同网站的缓存名即使相同,把它部署到同一服务器,由于各有各的作用范围,所以它们不会相互影响,自然也不会取错数据。
为证实两个有相同缓存名的网站运行于同一服务器倒底有无影响,我们举一个具体实例。先在一个网站A添加一个缓存名为 CacehTest 的缓存,然后在另一个网站B也添加一个缓存名为 CacehTest 的缓存,分别为它们设置不同的数据。
两个有相同缓存名的网站运行于同一服务器有无影响(Cache作用范围)实例
1、在网站A添加一个缓存名为 CacehTest 的缓存
private void GetCacheName()
{
string cacheName = "CacehTest";
if (Cache[cacheName] == null)
Cache.Insert(cacheName, "Cache1", null, Cache.NoAbsoluteExpiration, TimeSpan.FromHours(10), CacheItemPriority.Normal, null);
lbl1.Text = Cache[cacheName].ToString();
}
在页面载入时调用这个方法,就会在前台页面输出所缓存的值,缓存值赋给了一个 Label 控件,最终输出值为 Cache1。为进一步验证是否取错数据,第二次先执行网站B的页面再执行网站A的页面,结果也输出 Cache1,说明没有取错数据,Cache作用范围仅限于所在的网站。
二、在网站B添加一个缓存名为 CacehTest 的缓存
private void GetCacheName()
{
string cacheName = "CacehTest";
if (Cache[cacheName] == null)
Cache.Insert(cacheName, "Cache2", null, Cache.NoAbsoluteExpiration, TimeSpan.FromHours(10), CacheItemPriority.Normal, null);
lbl2.Text = Cache[cacheName].ToString();
}
在网站B的 Cache 中保存一个值为 Cache2,并把此值赋给一个名称为 lbl2 的 Label 控件,最终输出值为 Cache2。接着先执行一次A站的页面再执行B站的页面,结果也输出 Cache2,说明没有取错数据。