用 limit_fetch 设置某个 queue 同时只能由一个 worker 处理
用 limit_fetch 设置某个 queue 同时只能由一个 worker 处理
我和你们不一样,说明这代码不是写死的,哈哈哈
#3 楼 @glorySpring 开发环境可以用 Rack middle ware: Rack::Deflater
这种需求属于常用统计,翻开我的 sql 小本本,找到一句 sql 查询就可以搞定:
select a.name, a.created_at as start, min(c.created_at) as end, (c.created_at - a.created_at) as counter
from visits as a
left join visits as b on a.name = b.name and a.created_at = adddate(b.created_at, 1)
left join visits as c on a.name = c.name and a.created_at <= c.created_at
left join visits as d on c.name = d.name and c.created_at = adddate(d.created_at, -1)
where b.created_at is null and c.created_at is not null and d.created_at is null
group by a.name, a.created_at
输出结果
+------+------------+------------+---------+
| name | start | end | counter |
+------+------------+------------+---------+
| ls | 2014-01-01 | 2014-01-02 | 1 |
| ls | 2014-02-01 | 2014-02-05 | 4 |
| ls | 2014-03-02 | 2014-03-03 | 1 |
| zs | 2014-01-01 | 2014-01-02 | 1 |
| zs | 2014-02-01 | 2014-02-04 | 3 |
| zs | 2014-03-01 | 2014-03-03 | 2 |
+------+------------+------------+---------+
推荐 hpricot 可以参考别人写的: https://github.com/jdidion/feedme/blob/master/lib/hpricot-util.rb
啊,我被点名?没准备好呢,只能按照我论坛上发布的帖子来和大家随便聊聊...
就用一个表记录一下取过的文章,因为有外键和主键在,查询效率完全不用担心:
query = "id not in (select id from visited where user_id = 1)"
Post.where(querey).offset(rand(Post.where(query).count)).limit(1)
代表 70 后来吐槽...
#52 楼 @hepochen rails 的 fresh_when 是做了特殊处理的,在判断到 etag match 时候,只返回 304 header,而不会去执行后续代码.可以参考源码: https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/conditional_get.rb#L82 我里面提到的和 Rack::Cache 的对比 curl 实验也说明了这一点 至于 last_modified,我在实际应用中因为采用 fresh when/stale 这种方式手工处理 etag,就没必要混合使用,2者用其一就可以了.除非你有 last modified 未触发时间失效,但是又会出现 etag 改变的特殊情况才需要混用.
不仅仅是 markdown 转 html,就是单纯的 rails helper 生成 html,或者复杂页面 view template 渲染,也需要花费 10ms 级别的时间(没办法,ruby 不够快),对于访问量大的页面,片段缓存能够节约掉这部分时间也是相当可观的
in 查询一般都是主键查询,或者是有 index,不会有全表查询问题.
我那篇还没写完,也准备要加"给最需要的部分做缓存"这一节,先搭车放个我们网站 New Relic 的图:
#16 楼 @costy_peak 不在规划中?不是说有芯片和基带的技术问题没解决,要到年底么? 另外一边说有情怀地捐款给 OpenSSL,一边自己网站的登陆,注册,购买还是 plain http,吹嘘能力还是一如既往的不错.
锤子目前还不支持 4G,要到年底才有 4G 版本,期货卖 4000 元,对比去年的 nexus 5,更加觉得 google 是良心企业。
#30 楼 @meeasyhappy 是一样的,我已经补充到原文。 关于 3 的标题,action cache 其实也是缓存整个请求,和 2 差异在于:检查命中缓存的操作一个在 nginx,一个在 ruby,我再想想是否有更好的标题名。