2011-07-19 25 views
0

我正在開發一個網站,網站管理員可以在網站中改變cms網站的MetaTags,將這些MetaTags存儲在MySql數據庫中。來自數據庫的ASP.NET MetaTags

在公共master.page,在Page_Load事件中,我得到這些元標籤從數據庫

sTitle = get_from_data_base(); 

using (HtmlMeta mTag = new HtmlMeta()) 
{ 
    mTag .Name = "Title"; 
    mTag .Content = sTitle; 
    Page.Header.Controls.Add(mTag); 
} 

的問題是每次加載頁面時,master.page的負載事件從數據庫加載那些MetaTags。

一旦加載了元標記,我該如何保持緩存或類似的東西?所以網站在每次請求時都不訪問數據庫?

網站如何知道這些MetaTag何時更改以再次加載它們?

請問您能舉一個例子嗎?

非常感謝。

回答

0

其中一個解決方案要做的就是在Global.asax應用程序啓動時加載一次數據,並添加導致應用程序對象,然後在每個需要它頁面上,從應用程序對象加載它。

在數據庫中更改數據時,訪問應用程序對象並進行更新。

如果你不知道如何處理global.asax或應用程序對象,我會發布代碼。

void Application_Start(object sender, EventArgs e) 
     { 
      // Code that runs on application startup 
      string sTitle = get_from_data_base(); 
      Application.Add("sTitle", sTitle); 

     } 
     public string get_from_data_base() 
     { 
      //update this to call the database and get the data 
      return "Your data"; 
     } 

在你的頁面寫上如下:

string sTitle = Application["sTitle"].ToString(); 
      using (HtmlMeta mTag = new HtmlMeta()) 
      { 
       mTag.Name = "Title"; 
       mTag.Content = sTitle; 
       Page.Header.Controls.Add(mTag); 
      } 

當你的管理是更新的元標記添加以下行

Application["sTitle"] = "You manager entered string"; 
+0

是的,請問您可以發佈它嗎?當經理更換MetaTags時,這種方式會在公共場所自動更改嗎?由於 –

+0

我已經更新我的答案,也請不要忘記,如果它解決您的問題,以紀念一個答案是正確的,給予好評的。提前致謝。 –

+0

感謝@Samir_Adel,你認爲在應用程序對象4存儲或5串消耗了太多的內存或沒有性能問題做這樣的嗎?只要我獲得更多積分,我就會積極參與...這是一個新帳戶。 –

0

最後,你的答案後,閱讀在互聯網上我去緩存對象,而不是應用程序對象。我已閱讀比較好,所以我爲這最後的形式給出。將添加此對全局類和我的master.pages

public static MetaTagsDN get_meta_tags() 
    { 
     MetaTagsDN oTags; 

     if (HttpRuntime.Cache["MetaTags"] == null) 
     { 
      MetaTagsLN ln = new MetaTagsLN(); 
      oTags = ln.get_metatags(); 

      HttpRuntime.Cache["MetaTags"] = oTags; 
     } 
     else 
     { 
      oTags = (MetaTagsDN)HttpRuntime.Cache["MetaTags"]; 
     } 

     return oTags; 
    } 

訪問此方法你覺得呢?

感謝您的幫助...