Самый быстрый способ показать количество пользователей из базы данных?

#.net #mysql

#.net #mysql

Вопрос:

Я делаю ПОДСЧЕТ (userid) из моей таблицы пользователей и отображаю номер на веб-сайте, но мне было интересно, есть ли какой-либо другой лучший способ получить, сохранить и показать эту информацию вместо того, чтобы выполнять одно соединение и COUNT () из базы данных каждый раз, когда посетитель загружает веб-страницу?

РЕДАКТИРОВАТЬ: я только что нашел информацию о кэшировании в MSDN, и это, кажется, абсолютно лучший способ сделать это, спасибо TomTom!

ASP.NET Кэширование .NET 4.0

Если я хочу заполнить cachedString с помощью MembersCount из моей базы данных, это правильный способ для этого?

     string cachedString;
    cachedString = (string)Cache["CacheItem"];
    if (cachedString == null)
    {
    MySqlConnection Connection = siteStuff.GetConnection();
    MySqlCommand c = new MySqlCommand("SELECT COUNT(id) as TheCount FROM user", Connection);
    Connection.Open();
    MySqlDataReader reader = c.ExecuteReader();
    reader.Read();
    cachedString  = reader["TheCount"].ToString();
    Connection.Close();
    Connection.Dispose();
    Cache.Insert("CacheItem", cachedString);thanks TomTom!
 

РЕДАКТИРОВАТЬ: в настоящее время я использую этот код:

     int cacheNumberUsers;
    cacheNumberUsers = (int)Cache["MembersCount"];
    if (cacheNumberUsers == null)
    {
        cacheNumberUsers = siteStuff.GetNumberUsers();
        Cache.Insert("MembersCount", cacheNumberUsers);
    }
    nrRegMembers.Text = cacheNumberUsers.ToString();
 

Но я получаю сообщение об ошибке:

 System.NullReferenceException: Object reference not set to an instance of an object.
 

Онлайн:

 cacheNumberUsers = (int)Cache["MembersCount"];
 

Редактировать:
Я предполагаю, что мне нужно сначала вставить элемент в кэш?

 Cache.Insert("MembersCount");
 

Но имеет ли значение, куда я помещаю этот код? Другими словами, должен ли я просто поместить его в OnLoad, чтобы он срабатывал при каждом запросе страницы? Или я должен сначала проверить, что он существует?

Ответ №1:

Не делайте проблему, не связанную с базой данных, проблемой базы данных.

Как в: кэширование вывода сгенерированных страниц. Использование .NET? используйте кэш вывода / частичный кэш вывода для возврата старого sql, который генерируется, возможно, один раз в минуту или около того.

Решать проблемы с перфорацией в базе данных, игнорируя более высокие уровни, неразумно — и для .NET во всех интерфейсных технологиях веб-интерфейса есть более совершенные механизмы кэширования вывода. если вы скажете, какой из них вы используете… Я мог бы помочь вам со ссылками.

Комментарии:

1. О .. извините, я использую .NET около 5 лет, но, в конце концов, я не такой профессионал.. Я был бы очень благодарен, если бы вы могли дать мне несколько хороших ссылок о том, как я могу обналичить все виды материалов, чтобы ускорить работу своего сайта! Кэш / частичный кэш вывода звучит очень интересно! Любой совет о том, где это полезно применить к сообществу, в котором загружаются созданные пользователем изображения, статьи и сообщения на форуме?

2. Что. Какую сетевую технологию вы используете для создания веб-страниц?

3. Извините, что я это упустил, это 4.0

4. И все же, существует несколько способов создания веб-страниц в версии 4.0, какой из них вы используете?

5. Ну, это Веб-сайт, а не Проект. Если это то, что ты имеешь в виду. Если нет, то что вы имеете в виду?