Rails 4中的AJAX,HTML5历史API和缓存

red*_*red 5 ajax html5 ruby-on-rails http-caching html5-history

我正在移动一个Rails应用程序,它通过URL将新视图加载到完全AJAX版本.我们这样做的方式是通过AJAX加载所有视图并通过HTML5 History API更改URL.我们还想在整个过程中使用HTTP缓存,以便我们可以缓存每个部分.

但现在我们陷入了一个问题.现在基本上有两种方法可以加载每个页面 - 通过URL或点击通过AJAX加载部分内容的方法.但这导致我们创建两个不同的视图和控制器,基本上加载相同的东西 - 一个直接来自URL,一个通过点击主页面并通过AJAX和历史API加载.那么,当通过URL和AJAX直接加载时,我们如何确保从浏览器缓存中加载相同的视图?

举个例子,GitHub在它们的树形滑块中使用.您可以通过在窗口中浏览代码或直接使用URL路径直接访问代码.我确定如果之前已经加载了页面,它们会从浏览器缓存中获取部分内容.

有没有办法将请求发送到同一个URL但只是渲染部分或加载整个页面,具体取决于是通过单击选项卡还是在地址栏中输入请求?它应该使用缓存的部分,如果它们已经存在于浏览器中.

谢谢

Ane*_*pos 0

如果我没猜错的话,你想对同一个操作有不同的行为,一种是 get 请求,另一种是 ajax 请求。

你可以这样做:

mypage_controller.rb

def my_page
  ...(your logic here)
  respond_to do |format|
    format.js
    format.html
  end
end
Run Code Online (Sandbox Code Playgroud)

my_page.js.erb

alert('testing');
.... (further ajax code here)
Run Code Online (Sandbox Code Playgroud)

这是一篇文章,执行此行为Rails 4:如何使用partials & AJAX,非常简单

这样您就可以对 ajax 和 get 请求进行相同的响应操作