公司挺靠谱的
我一直觉得 slim 这样的工具,或者楼主这样的工具,不太好用...😄 就是不好复制黏贴了
楼主,你好像没理解 race_condition_ttl 的意思。当前进程,给 cache 延长了时间。但是当前进程,也在继续执行后面的代码(而其他进程再执行的时候,发现有新的缓存就直接返回了),接着就要执行耗时的 block,然后重新写缓存。这是为了避免所有进程都同时执行 block,同时进行耗时操作。
@nouse 去掉了前面两行。图表没有变化。。
这是你 url 没有修改,history 里面只有第一页。每次翻页的时候,你需要往 history 中加入一条。这个用 js 就能实现。
顶一下
我查查,谢谢!
@IChou 是的,一模一样的架构
看起来原来 incoming 和 outgoing 的流量是 1:1 的样子,改成 puma 之后,变成 2:1 了,这都很奇怪啊。
我们现在服务器的架构是 1 个 ELB(外部)->2 个 NGINX(做反向代理,跨域等控制)->1 个 ELB(内部)->多台 api 服务器的 PUMA 问题中发的图是其中 1 台 nginx 的网卡流量图 nginx 的配置如下
server {
listen 80;
server_name api.xxxxxx.com;
access_log logs/api.xxxxxx.com_access.log main;
error_log logs/api.xxxxxx.com_error.log;
location / {
resolver 172.16.0.2 valid=10s;
resolver_timeout 5s;
set $elb_backend "http://internal-PE-FF-Prod-ELB-Internal-01-xxxxxx.eu-central-1.elb.amazonaws.com:3000";
proxy_pass $elb_backend;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
if ($http_user_agent ~ (Baiduspider|Sogou|Python-urllib|Googlebot)) {
return 403;
}
}
location /nginx-status {
stub_status on;
access_log off;
error_log off;
allow 127.0.0.1;
}
}
@IChou 是统计的 nginx 所在服务器的网卡的流量,这个服务器也只运行着 nginx。
你用开发者工具,看看请求到的文件是不是 gzip 包的格式就知道了。
挺好一个团队,顶一下
@xxqfamous @shadow @hz_qiuyuanxin 谢谢,我看看数据库的参数是否有异常
自己回答一下吧。查了一下,应答如果没有 expires 或者 cache-control 的 header,浏览器也会默认给予缓存。规则基本上都是(date - last modify)/10,不过这个是依赖浏览器的行为,并不可靠。
etag 和 last-modified 是用来做 conditional HTTP GET 的吧。控制缓存,不是应该用 expires 和 cache-control 么?
请问提交到 service 中处理是啥意思?
配域名跟你 render 哪个模版没关系吧。就算你是手机用了 pc 端的域名,访问一样显示 mobile.erb 啊
如果就这么一两条操作按钮,写 view 里面就好了。如果要判断用户的各种权限,有可能有十几条操作按钮。你可以把它移到 helper 文件里面。然后传 record,current_user 过去,返回 html 片段就好了,如果在 view 里面判断逻辑非常多,看着真的很闹心,放在 helper 里面,操作更方便点。
有时候客户端很多这种重复提交的问题,不只是一个接口调用,也有 web 端的按钮不加点击后禁用这类问题,你没法控制这么多客户端的页面,所以后端还是得有自己的机制。
我跟楼主遇到过一样的问题。这个在后端加一个重复请求拒绝的功能就好了,一模一样的参数你 1 秒内已经收到过,你就返回 400。不过前提是你的参数里面,要带上区分用户的东西,比如用户的 token,或者设备的 uuid,或者加上对方网络的 ip 地址。 实现的方法就很多了,rails 的缓存也行,redis-object 也有类似的存储功能。
笑死我了!
我做的服务跟楼主配置差不多。不过访问量不大还没出过这个问题。帮楼主顶一下!
@kgen baidu 的证书,怎么看上去有很多三级的泛域名。这也是 multi-domain 证书吗,怎么看上去没有域名数量的限制,而且像是泛域名证书?申请 multi-domain 证书需要每个域名都通过绑定域名的邮箱,或者域名根目录下文件来验证域名所有权么?
@Trump 同感,intellij 写 java,代码自动生成,类型检查,真的太方便了。以前写 ruby 的代码,很多时候也会用元编程,动态生成一些方法,现在如果代码重复不是太多,我还是直接写方法。这样 rubymine 起码能直接跳转,重构的时候,也比较直观方便。
真的好想去。。。可惜太远了
分开部署,但是也不一定需要跨域啊。可以用 nginx 配置一下,前端项目可以加个命名空间。比如/frontend,后端加上/api,然后在 nginx 里面做转发。前端项目打包后,基本上就一个 index.html 了吧,那需要 nginx 对所有/frontend 开头的路由都转发到 index.html 上
@msg7086 我的使用场景就是 .b.com 和.a.b.com,这样的情况是不是需要买两个证书?单张 wildcard 证书可以选择.b.com 这样 wildcard,也可以设置成.a.b.com 这样子是么?
@kgen 如果热 reissue 需要重新上传。那旧的证书还能用么?这中间是否会出现时间差,就是一段时间内这个部署好的证书不能用了?将新的证书上传后才能恢复?
@kgen wildcard 证书只能通用二级域名,我是想二级三级一起通用。reissue 生成的证书会改变么?需要替换掉服务器上放置的证书么?