Caching all users in ASP.NET

I am working on a web app in ASP.NET/C# which needs to be scalable to handle the high user load (will probably run in a web farm). Since it will cater to a high number of users, around 1 Million plus, but number of online users would be around 30K-50K. I plan to use caching (provider based), and was wondering:

  1. Is it a good idea to cache ALL users for performance? I plan to cache all other generic data, like settings etc, but how efficient would it be to cache ALL users in memory? If a user changes his/her profile, I will reload only that particular user in cache (having a collection of all the users). Any suggestions on this approach?

  2. Do I need to worry about locking when using this above users cache? Only one editing the profile would be the user himself, that would be one atomic operation, though there will be multiple read oeprations in different threads. So while fetching users from cache, or updating a particualr user, should I use lock?

Thanks

Asif

10
задан AsifQadri 26 August 2010 в 18:05
поделиться

2 ответа

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

Как правило, вы должны хранить в кэше только то, что дорого получить из базы данных, и несколько пользователей захотят увидеть эту информацию одновременно. Например, список 100 лучших продуктов или что-то в этом роде. Небольшие объемы данных, которые относительно дешево получить из базы данных и которые полезны только одному человеку, должны оставаться там, где они есть.

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

6
ответ дан 4 December 2019 в 03:14
поделиться

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

Для блокировки - может ли кто-либо еще редактировать профиль пользователя (например, администратор)? Будет ли это обычным явлением? Если это так, вы можете захотеть сделать некоторую блокировку. В противном случае, если бы только пользователь мог редактировать свои собственные материалы, я бы не беспокоился.

0
ответ дан 4 December 2019 в 03:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: