关于 Cache-Control
和 Pragma
在这种场景的意义:
当客户端 Request Headers 带有以上两个参数 Cache-Control: no-cache
或 Pragma: no-cache
的时候,Nginx 会直接忽略 Proxy Cache 请求原始的服务器,重新下载新的图片。
Cache-Control 和 Pragma 的含义是相同的,区别是 Cache-Control
不支持 HTTP 1.0
这种 Request Headers 在浏览器 强制 刷新的时候会发出。
Request Headers:
:authority:ruby-china-files.b0.upaiyun.com
:method:GET
:path:/user/avatar/2.jpg!md
:scheme:https
accept-encoding:gzip, deflate, sdch, br
cache-control:no-cache
pragma:no-cache
...
你说 Ruby China?
#3 楼 @liaozhong API 那个链接,后面有源代码的链接
为支持 Fragment caching 需要覆盖 cache helper:
module ApplicationHelper
# Override cache helper for support multiple I18n locale
def cache(name = {}, options = {}, &block)
options ||= {}
super([I18n.locale, name], options, &block)
end
end
location.href
Rails 不是万能的,多想想什么事情应该在什么地方做
https://github.com/kickstarter/rack-attack
Rack::Attack.throttle('req/ip', limit: 60, period: 1.hour) do |req|
req.ip
end
Nginx 得先得到 RealIP 并打到日志中。
log_format
增加 $host
:log_format my_log '$http_x_forwarded_for - $remote_user [$time_local] "$host" "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $request_time';
access_log /var/log/nginx/access.log my_log;
衣服品质(应该说款式和细节)不是太好,我也是才收到不久,不建议大家买
下次得在 Gem 里面申明版本
Ruby 版本太低了
此外,像 Net::HTTP.get_response
你不需要了解到到底有哪些异常吧,你只需要处理正确的场景,异常统一打印日志就好了。
你不需要知道异常出来是什么类型,因为返回出来的都是继承自 Exception 的类型,所以:
除非你需要特性的处理,比如 Timeout,这个时候需要查查了
begin
Net::HTTP.get_response('https://ruby-china.org')
rescue => e
# e 是一个 Exception 类型
# https://ruby-doc.org/core-2.2.0/Exception.html
puts e.message
end
另外,你可以阅读以下这篇文章:
一般 Ruby 的各种库 API 文档的位置都有源代码的链接或源代码附带,里面一看就知道哪个函数会有什么异常可能抛出了
Java 也没法告诉你所有的异常类型吧?例如 A -> B -> C -> D 这样基层的函数调用,D 函数要抛出的异常你没法知道吧?
其实还有一个适用场景:
当你购买的云存储没有提供图片缩略图功能的时候,可以用这种方式搭建。
ps aux | grep puma
然后找到进程编号
sudo kill -9 进程编号
开发环境不是异步的,为了调试
你的问题信息太少 看不出原因
属性已经加成功了,只是 inspect
没有输出而已,这个不用担心
Ruby China 最新的设置:
body {
font-family: Helvetica, Arial, "PingFang SC", "Noto Sans", Roboto, "Microsoft Yahei", sans-serif;
letter-spacing: .03em;
}