rails中的动态页面缓存
dynamic page caching in rails
如何将动态缓存添加到时间中,或者我应该使用片段缓存?
我试着跟随RailsCasts,但没有成功。
_feed.html.rb
<% cache feed do %>
<div class="feed">
<div id="time">
<%= render 'shared/time' unless @page_caching %>
</div>
<p class="pull-right grey"><%= time_ago_in_words(feed.posted_at) %></p>
<div class="clearfix">
<p class="grey"><%= image_tag feed.profile_pic, :class => 'pic', :size => '15x15' %> @<%= feed.name %></p>
</div>
<p class="content"><%= raw auto_link(feed.content, :username_include_symbol => true, :target => '_blank') %></p>
</div>
<% end %>
_time.html.rb
<p class="pull-right grey"><%= time_ago_in_words(feed.posted_at) %></p>
index.js.rb
$('#feeds').append('<%= j render(@feeds) %>');
<% if @feeds.next_page %>
$('.pagination').replaceWith('<%= j will_paginate(@feeds) %>');
<% else %>
$('.pagination').remove();
<% end %>
$('#time').prepend('<%= j render("shared/time") %>');
feeds_cotroller.rb
def index
@page_caching = true
@feeds = Feed.page(params[:page]).per_page(12)
end
使用随时间变化的助手不应在缓存块内使用。最好的解决方案是使用一个js插件,它会为您插入时间字符串。谷歌timeagojs插件,你会得到一堆有用的结果。第一个结果在http://timeago.yarp.com/.使用该插件,您的代码应该如下所示(我插入了一个脚本,该脚本应该插入时间字符串)
<% cache feed do %>
<div class="feed">
<div id="time">
<%= render 'shared/time' unless @page_caching %>
</div>
<p class="pull-right grey timeago" title="<%= feed.posted_at %>"></p>
<script>
jQuery(document).ready(function() { jQuery("p.timeago").timeago() })
</script>
<div class="clearfix">
<p class="grey">
<%= image_tag feed.profile_pic, :class => 'pic', :size => '15x15' %> @<%= feed.name %>
</p>
</div>
<p class="content"><%= raw auto_link(feed.content, :username_include_symbol => true, :target => '_blank') %></p>
</div>
<% end %>
这是一个简单的实现。您可能想将js调用移到资产文件中,这样就不必在缓存中调用它。不管怎样,这应该会给你一个主意。
相关文章:
- 使用服务工作者动态缓存HTTP URL的包装器
- 在动态功能中缓存ajax请求
- 如何在动态表更新后刷新整个表排序缓存
- 如何缓存包含 1890000 个页面的动态站点并将其静态托管在 AWS 上
- 使用 cloudflare 缓存动态页面
- 是否可以缓存具有指向动态JavaScript的链接的HTML页面
- 利用动态 HTML 上的浏览器缓存
- 另一种在javascript中创建随机动态url的方法/阻止wpengine缓存
- rails中的动态页面缓存
- 缓存通过PHP/AAJX/JSON/jQuery加载的动态图像
- 用php/js-can'在IE中加载动态报价;似乎没有覆盖缓存
- Firefox正在动态iframe中加载缓存
- 在UIWebView中动态加载javascript文件,但本地缓存不起作用
- IE在添加到onclick处理程序时从缓存中获取脚本(动态添加)
- 如何禁用jquery动态树的缓存(记住以前选择的节点)
- IE8将动态iframe内容从缓存重新加载到错误的iframe中
- Express.js缓存请求结果与动态数据
- 用PHP动态禁用Javascript/CSS缓存
- 禁用动态链接外部Javascript文件中的缓存破坏
- 是否可以缓存动态网页?