#.net #mysql
#.net #mysql
Вопрос:
Я делаю ПОДСЧЕТ (userid) из моей таблицы пользователей и отображаю номер на веб-сайте, но мне было интересно, есть ли какой-либо другой лучший способ получить, сохранить и показать эту информацию вместо того, чтобы выполнять одно соединение и COUNT () из базы данных каждый раз, когда посетитель загружает веб-страницу?
РЕДАКТИРОВАТЬ: я только что нашел информацию о кэшировании в MSDN, и это, кажется, абсолютно лучший способ сделать это, спасибо TomTom!
Если я хочу заполнить 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. Ну, это Веб-сайт, а не Проект. Если это то, что ты имеешь в виду. Если нет, то что вы имеете в виду?