在我的ASP.net Web表单应用程序中。
我的 Timetable.aspx页面根据参数 JSON 格式从 Timetable.aspx.cs 的WebMethod请求数据> GroupId ,而Timetable.aspx.cs从 TimeTableBl.cs 获取数据,该数据从 TimeTableDataLayer.cs 获取数据并调用存储的proc usp_get_TimeTableByGroupId
每次从数据库中获取时间表都是一项非常资源化的任务,应该在某个级别进行缓存。
所以基本上我只想了解这种适当方法的概述。
在Businesslogic Layer级别通过创建时间表的Hashmap,如果某人已经请求了时间表,则使用key作为GroupId进行缓存,然后将对应于该特定时间表呈现相同的JSON,否则将从DB获取新的时间表。第一次插入Hashmap,然后呈现为JSON字符串。 当我尝试更新另一个线程同时使用的hashmap中的特定时间表对象时,这可能会有风险。
那么可以解决这个问题。
此处的时间表是期间的集合。 期间包含以下属性。
List<Periods> TimeTable = new List<Periods>();
class Period
{
int Id;
DateTime StartTime;
DateTime EndTime;
tinyint Weekday;
int RoomId;
string RoomNo;//alphanumeric
int facultyId;
string FacultyName;
int subjectId;
string SubjectName;
}