Rails - Safari通过支持AJAX的链接进行额外请求

问题描述 投票:1回答:1

我构建了一个表,底部有按钮,通过data-remote =“true”加载一些额外的行。这个传递给控制器​​,有一个format.js响应,jquery追加到表中。除了一件事,一切都很好。 Safari似乎正在做某种......急切加载它遇到的第一个URL? Chrome或Firefox中不会出现此问题。

我的HTML链接如下所示:

<a turbolinks="false" data-remote="true" href="/users/name?expand=5">5</a>
<a turbolinks="false" data-remote="true" href="/users/name?expand=50">50</a>
<a turbolinks="false" data-remote="true" href="/users/name?expand=500">500</a>

当我访问我的“/ users / name”路线时,我看到:

Processing by UsersController#show as HTML
Processing by UsersController#show as JS
Parameters: {"id"=>"name"}
Parameters: {"expand"=>"5", "id"=>"name"}
Rendering users/show.html.erb within layouts/application
Rendering users/show.js.erb

提供HTML和JS响应。这会查询我的数据库两次(首先是初始数据,然后是另外五行)。只在页面上(正确)呈现初始数据。

为什么只有Safari通过点击链接才能提出此要求?

ruby-on-rails safari
1个回答
0
投票

这很奇怪,但我很确定我想出来了。 Safari正在尝试通过预取我在该页面上经常单击的链接的数据(现在正在点击很多,因为我正在测试它)来提供帮助。

在我的第一个例子中,您可以看到始终调用“expand => 5”。我点击了“expand => 50”链接10次,然后尝试点击“/ users / name”路线。现在,每个请求看起来像:

Processing by UsersController#show as HTML
Processing by UsersController#show as JS
Parameters: {"id"=>"name"}
Parameters: {"expand"=>"50", "id"=>"name"}

这有时是一个额外的查询,但我想它并没有伤害。如果有的话,它会让我的数据库缓存一个半可能发生的请求。

© www.soinside.com 2019 - 2024. All rights reserved.