ASP.NET метатеги из базы данных - PullRequest
0 голосов
/ 19 июля 2011

Я разрабатываю веб-сайт, на котором менеджер сайта может динамически изменять мета-теги для веб-сайта в cms, сохраняя эти мета-теги в базе данных MySql.

На общедоступной странице 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 загружает из базы данных эти мета-теги.

Как я могу хранить в кэше или что-то подобное метатеги после их загрузки, чтобы сайт не обращался к базе данных при каждом запросе?

Как сайт может узнать, когда эти мета-теги были изменены, чтобы загрузить их снова?

Пожалуйста, не могли бы вы привести пример.

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 20 июля 2011

Наконец, после ваших ответов и чтения в интернете я выбрал объект Cache вместо объекта Application.Я прочитал лучше, поэтому мой последний подход для этого будет добавить это в глобальный класс и получить доступ к этому методу из моих 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;
    }

Что вы думаете?

Спасибо за помощь ...

0 голосов
/ 19 июля 2011

Одно из решений - загрузить данные один раз в событие запуска приложения 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";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...