设置置顶,toTop 为1 ,到期为0,endTime 为null
各位大咖觉得用哪个方案实现比较好,SQL作业,还是JQUERY 定时扫描,最好是能减少资源占用的方案
14 个解决方案
#1
windows计划任务
#2
为什么要用作业 扫描 你不是有一个结束时间么,为什么不能用两个字段去控制
#3
至于你后续的数据更改 用SQL作业或者一个后台的同步服务不就行了啊 不牵扯Jquery定时扫描吧
#4
谢谢大咖们的帮助!
置顶是可以成功的,就是到期不知采用哪个方式最佳
SQL作业没用过,同步服务是怎样,有代码或者案例分享下吗
#5
不一定用作业,就是能自动恢复endTime = null 就好,不占资源的
#6
额,你又不是要生成静态页面
所以这个东西随取随用就行,过期了就过期没人访问谁也看不见,有人访问了,把数据库update一下就成(也不用每次访问更新,1天更新一次就够)
所以这个东西随取随用就行,过期了就过期没人访问谁也看不见,有人访问了,把数据库update一下就成(也不用每次访问更新,1天更新一次就够)
#7
你可以在前端页面展示这样的一个列表时,异步地去通知一下服务器端来判断。这个不需要在服务器端搞什么“计划任务”。
而在服务器端,会将“某个版面最后一次判断置顶帖子”的时间放到数据 Cache 中(设置 Duration 为 10分钟),也就是说首先从缓存中查询有没有这个时间记录,如果有则不去真的去处理(也就不访问数据库)。
而在服务器端,会将“某个版面最后一次判断置顶帖子”的时间放到数据 Cache 中(设置 Duration 为 10分钟),也就是说首先从缓存中查询有没有这个时间记录,如果有则不去真的去处理(也就不访问数据库)。
#8
例如,你可以写一个查询方法
因此假设在10分钟内有5万个请求,并不会读取数据库,而是都是直接拿缓存结果输出。当缓存过期,就会自动去修改数据库。
而这个输出的 res,可以序列化为 json 格式,返回给前端页面。例如页面上使用 ajax.get 方式读取这样一个文章里列表 js 对象集合,并且自动插入到文章列表的顶部,都可以异步完成。在加载页面之后再瞬间地加载文章置顶,并不会“卡”页面加载过程。
private List<文章> 获取置顶文章列表(string 栏目)这里,只有当缓存里没有置顶文章列表时,才会真正去数据库查询。而去数据库查询时,那个方法中,会首先将那些过期的文章的字段改掉(改为不置顶的)。
{
var cache = HttpRuntime.Cache;
var key = string.Format("栏目_{0}_的置顶文章列表", 栏目);
var res = (List<文章>)cache[key];
if (res == null)
{
res = 查询数据库返回置顶文章列表(栏目);
cache.Insert(key, res, null, DateTime.Now.AddMinutes(10), Cache.NoSlidingExpiration);
}
return res;
}
因此假设在10分钟内有5万个请求,并不会读取数据库,而是都是直接拿缓存结果输出。当缓存过期,就会自动去修改数据库。
而这个输出的 res,可以序列化为 json 格式,返回给前端页面。例如页面上使用 ajax.get 方式读取这样一个文章里列表 js 对象集合,并且自动插入到文章列表的顶部,都可以异步完成。在加载页面之后再瞬间地加载文章置顶,并不会“卡”页面加载过程。
#9
哪里用得着jquery、定期作业啥的?
页面请求时:
if(当前时间>=文章置顶的过期时间)
文章.置顶=false
页面请求时:
if(当前时间>=文章置顶的过期时间)
文章.置顶=false
#10
lz 之所以能问出“哪个方案实现比较好,SQL作业,还是JQUERY 定时扫描”这样的问题,那么它的置顶文章列表接下来也不希望不断地、反复地去查询数据库。
#11
其实不去做批量计划任务设计,这可以! 但是同时要满足他希望能批量定时处理(而不是每一个请求都去查询数据库并且将过期的内容改掉)的需求
#12
这个得题主自己权衡了,做profile,看哪种效率更高。
我觉得一般来说,我的方案就够了。得到请求之后,反正都要去查的。
#13
谢谢大家的关注以及献计献策,问题已经解决,并发布上线
做法跟 @sp1234 朋友的建议那样,在具体的页面才触发事件,减少对数据库的访问,@freeflying1222朋友的建议也挺好的
做法跟 @sp1234 朋友的建议那样,在具体的页面才触发事件,减少对数据库的访问,@freeflying1222朋友的建议也挺好的
#14
SQL作业+存储过程
#1
windows计划任务
#2
为什么要用作业 扫描 你不是有一个结束时间么,为什么不能用两个字段去控制
#3
至于你后续的数据更改 用SQL作业或者一个后台的同步服务不就行了啊 不牵扯Jquery定时扫描吧
#4
至于你后续的数据更改 用SQL作业或者一个后台的同步服务不就行了啊 不牵扯Jquery定时扫描吧
谢谢大咖们的帮助!
置顶是可以成功的,就是到期不知采用哪个方式最佳
SQL作业没用过,同步服务是怎样,有代码或者案例分享下吗
#5
不一定用作业,就是能自动恢复endTime = null 就好,不占资源的
#6
额,你又不是要生成静态页面
所以这个东西随取随用就行,过期了就过期没人访问谁也看不见,有人访问了,把数据库update一下就成(也不用每次访问更新,1天更新一次就够)
所以这个东西随取随用就行,过期了就过期没人访问谁也看不见,有人访问了,把数据库update一下就成(也不用每次访问更新,1天更新一次就够)
#7
你可以在前端页面展示这样的一个列表时,异步地去通知一下服务器端来判断。这个不需要在服务器端搞什么“计划任务”。
而在服务器端,会将“某个版面最后一次判断置顶帖子”的时间放到数据 Cache 中(设置 Duration 为 10分钟),也就是说首先从缓存中查询有没有这个时间记录,如果有则不去真的去处理(也就不访问数据库)。
而在服务器端,会将“某个版面最后一次判断置顶帖子”的时间放到数据 Cache 中(设置 Duration 为 10分钟),也就是说首先从缓存中查询有没有这个时间记录,如果有则不去真的去处理(也就不访问数据库)。
#8
例如,你可以写一个查询方法
因此假设在10分钟内有5万个请求,并不会读取数据库,而是都是直接拿缓存结果输出。当缓存过期,就会自动去修改数据库。
而这个输出的 res,可以序列化为 json 格式,返回给前端页面。例如页面上使用 ajax.get 方式读取这样一个文章里列表 js 对象集合,并且自动插入到文章列表的顶部,都可以异步完成。在加载页面之后再瞬间地加载文章置顶,并不会“卡”页面加载过程。
private List<文章> 获取置顶文章列表(string 栏目)这里,只有当缓存里没有置顶文章列表时,才会真正去数据库查询。而去数据库查询时,那个方法中,会首先将那些过期的文章的字段改掉(改为不置顶的)。
{
var cache = HttpRuntime.Cache;
var key = string.Format("栏目_{0}_的置顶文章列表", 栏目);
var res = (List<文章>)cache[key];
if (res == null)
{
res = 查询数据库返回置顶文章列表(栏目);
cache.Insert(key, res, null, DateTime.Now.AddMinutes(10), Cache.NoSlidingExpiration);
}
return res;
}
因此假设在10分钟内有5万个请求,并不会读取数据库,而是都是直接拿缓存结果输出。当缓存过期,就会自动去修改数据库。
而这个输出的 res,可以序列化为 json 格式,返回给前端页面。例如页面上使用 ajax.get 方式读取这样一个文章里列表 js 对象集合,并且自动插入到文章列表的顶部,都可以异步完成。在加载页面之后再瞬间地加载文章置顶,并不会“卡”页面加载过程。
#9
哪里用得着jquery、定期作业啥的?
页面请求时:
if(当前时间>=文章置顶的过期时间)
文章.置顶=false
页面请求时:
if(当前时间>=文章置顶的过期时间)
文章.置顶=false
#10
哪里用得着jquery、定期作业啥的?
lz 之所以能问出“哪个方案实现比较好,SQL作业,还是JQUERY 定时扫描”这样的问题,那么它的置顶文章列表接下来也不希望不断地、反复地去查询数据库。
#11
其实不去做批量计划任务设计,这可以! 但是同时要满足他希望能批量定时处理(而不是每一个请求都去查询数据库并且将过期的内容改掉)的需求
#12
哪里用得着jquery、定期作业啥的?
lz 之所以能问出“哪个方案实现比较好,SQL作业,还是JQUERY 定时扫描”这样的问题,那么它的置顶文章列表接下来也不希望不断地、反复地去查询数据库。
这个得题主自己权衡了,做profile,看哪种效率更高。
我觉得一般来说,我的方案就够了。得到请求之后,反正都要去查的。
#13
谢谢大家的关注以及献计献策,问题已经解决,并发布上线
做法跟 @sp1234 朋友的建议那样,在具体的页面才触发事件,减少对数据库的访问,@freeflying1222朋友的建议也挺好的
做法跟 @sp1234 朋友的建议那样,在具体的页面才触发事件,减少对数据库的访问,@freeflying1222朋友的建议也挺好的
#14
SQL作业+存储过程