擦!真是个大问题啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ruby
get "/v1/products" do
@products = Product.xxxxxxxx.per(params[:per_page] || 20).order(params[:order] || "id DESC")
etag(@cache_key = Digest::MD5.hexdigest([@products.map{|product| product.updated_at}, request.query_string].join))
render :rabl, :"v1/products/index", :format => "json"
end
products/index.rabl
object false
cache [:products, @cache_key]
child(:meta) do
node(:pagination){|_| pagination_hash(@products)}
node(:message){|_| @message}
end
node(:data) do
partial("v1/products/_product", :object => @products)
end
静态化:
get "/v1/global_nav" do
expires 2.weeks, :public, :must_revalidate
etag(@cache_key = [Time.now.strftime("%Y%m"), "global_nav", request.query_string].join)
# logic here
render :rabl, :"v1/global_nav", :format => :json
end
这也要 gem?
#6 楼 @huacnlee mail_view 和 letter opener 这些预览不靠谱啊。。因为真实的邮件客户端不支持很多 css 特性。还需要发到邮箱里到邮箱里测试。
http://css-tricks.com/using-css-in-html-emails-the-real-story/
因为没人用!
真的有那么多 Fat Client 么?内容还是最主要的呀..
中间表有其他信息的单独建 model。即使没有其他信息我也单独建 model,并且加主键。
楼主 你已经分享两次了
这么难的问题,你 at 错人了..
#123 楼 @lmorenbit 谢谢
我觉得 JSONP leak 和 UJS leak 这两个相关的事件上,homakov 有些小题大做。
在使用 JSONP 解决跨域问题时,开发者首先要考虑的是,自己可以跨域了,同时也给了攻击者跨域的机会。跨域传输的内容是否敏感,是否有修改资源行为,这是需要开发者去权衡的。对于确实有敏感内容和修改资源行为的 jsonp 请求,可以参考这里的最后面一节所提的方案解决。
回到 UJS,对于修改资源的请求,一般正确使用 HTTP verb 就没问题..因为有 CSRF 防御。如果真是获取私有内容,验证一下request.xhr?
或验证 csrf_token 同样解决问题。
没必要。
我觉得对各种常见情况的回答都有模板。。。