此网址返回json
https://example.com/product/product_name.json // returns json document
和
https://example.com/product/product_name
返回html,它使用jquery在内部调用上面的JSON url,它构造它并很好地呈现数据。
在控制器中我正在进行缓存
def product
expires_in 1.day , public: true
render json: @product
end
现在的问题是,如果用户在开始时直接访问https://example.com/product/product_name
,则会加载html
但是当他再次访问时,他会看到json
数据。
无论如何都要阻止或控制它,以便用户可能看不到json
。
PS:http
缓存最适合我们,我知道其他缓存技术。
更新基于格式的渲染无法正常工作。我想这是因为http_caching
请求没有到达服务器。无论如何,这就是我在application_controller
做的事情。
before_filter :intercept_html_requests, :unless => :not_format_html?
private
def not_format_html?
request.format != Mime::HTML
end
def intercept_html_requests
render('homepage/index')
end