在Rails 4中使用AJAX,HTML5历史记录API和缓存

5
我正在将一个通过URL加载新视图的Rails应用程序移植到完全基于AJAX的版本。我们的做法是通过AJAX加载所有视图,并通过HTML5 History API更改URL。我们还想在整个过程中使用HTTP缓存,以便可以缓存每个部分。
但现在我们遇到了一个问题。现在有两种加载每个页面的方式 - 通过URL或通过单击某个东西通过AJAX加载该部分。但这导致我们为从URL直接加载相同内容和通过AJAX和历史API加载相同内容创建了两个不同的视图和控制器。那么,如何确保当直接通过URL和通过AJAX加载时,浏览器缓存中加载相同的视图?
举个例子,GitHub在他们的树形滑块中使用了这个技术。您可以通过窗口直接访问代码,也可以直接使用URL路径访问代码。如果页面已经加载过,他们肯定会从浏览器缓存中获取其中的一部分。
是否有一种方法可以向同一URL发送请求,但根据是否通过标签单击或输入地址栏来呈现部分或加载整个页面?如果浏览器中已经存在缓存的部分,则应使用缓存的部分。
谢谢
1个回答

0
如果我理解正确,您想要为相同的操作使用不同的行为,一种是当请求为get时,另一种是通过ajax请求。
您可以通过以下方式实现:

mypage_controller.rb

def my_page
  ...(your logic here)
  respond_to do |format|
    format.js
    format.html
  end
end

my_page.js.erb

alert('testing');
.... (further ajax code here)

这里有一篇文章介绍如何实现这种行为 Rails 4: How to partials & AJAX, dead easy

这样你就可以让同一个操作同时响应ajax和get请求了


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接