【问题标题】:Get the value of one word dynamically in rails static page cache在rails静态页面缓存中动态获取一个单词的值
【发布时间】:2013-07-15 06:12:44
【问题描述】:

我的应用中有静态页面。此应用程序在两个不同的域上运行。

我希望某些静态页面显示 名称。所有内容都是静态的,但只有域名是动态的。我怎样才能在 Rails 中完成这项工作?

喜欢

cache do
 some content goes here and then i want to display the <%=request.domain()%>
end

通过上述方式:request.domain() 将首先缓存并使用相同的域名提供服务,而忽略您稍后使用哪个域访问它。

【问题讨论】:

  • 没有人。这不是获取当前 URL。假设我获得了当前 url 并第一次缓存了这个 url,对于所有访问该站点的用户来说,这将是相同的 url。关于缓存+动态主机名
  • 静态你的意思是这是在public/ dir?
  • 为什么不在部署/启动时生成文件?我的意思是域在运行时不会改变。在您的 capistrano deploy.rb 中执行此操作,或者添加一个生成文件的初始化程序。

标签: ruby-on-rails


【解决方案1】:

在你看来:

<%= request.domain() %>

在我在localhost:3000 上运行的本地计算机应用程序上,上面的代码在屏幕上返回localhost

cache "first_part_up_to_domain_name" do
 some content goes here and then i want to display the 
end

<%=request.domain()%>

cache "the_rest_after_domain_name" do
 rest of the content
end

在动态页面的其他情况下,您可以使用过期缓存方法覆盖缓存页面,但对于静态页面,您不确定如何做到这一点。

【讨论】:

  • 可能是我没有解释清楚。让我再次解释一下'缓存做一些静态内容到这里,我也想用上述方式显示 end':request.domain() 将首先缓存,并将与相同的域名忽略您用于访问的域
  • 可能是 :) 我知道您希望域名出现在您的网页上。
  • 我刚刚修改了问题以帮助更好地理解。
  • 你缓存所有页面吗?你在哪里显示域名?可能你最好将你的内容缓存到域名,并在域名之后启动另一个缓存帧,这样&lt;%= request.domain %&gt; 就不会被缓存
  • 好吧。我找到了一个看似简单易行的解决方案。我为缓存添加了一个密钥,它将为每个域创建两个不同的密钥,当用户根据密钥访问域时,它将获取缓存的内容。感谢大家的反馈。 cache("#{@page_title}_#{request.domain()}") 一些静态文本放在这里 end
【解决方案2】:

好吧。我找到了一个看似简单易行的解决方案。我添加了一个缓存键,它将为每个域创建两个不同的键,当用户根据键访问域时,它将获取缓存的内容。感谢大家的反馈。

 cache("#{@page_title}_#{request.domain()}") 
   some static text goes here <%=request.domain()%> 
 end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多