1

浏览器和代理缓存使用 URL 作为缓存键。在 pjax 中,URL 用于请求部分 Pjax 页面和完整页面,因此两个响应都将缓存在同一个键下。这显然会导致错误,因为可能会加载部分页面而不是整个页面,反之亦然。

一个人将如何解决它?

我唯一能想到的就是在 url 中添加一个 pjax 标签。pjax 是否提供了这样做的内置方式?

谢谢!

ps 我正在使用 Rails,以防万一有人在 Rails 中有更优雅的方式。

4

2 回答 2

2

jquery-pjax附加_pjax=true到 XMLHttpRequest 中的 url。

另一种方法是每个 URL 只有一个页面。

这可以通过 jquery-pjax 通过仅发送完整页面并使用该fragment选项来实现。

一种更灵活的方法是只发送最少的页面并使用 AJAX 来添加所有共享的站点内容 - 页面横幅、导航、广告等。大多数 AJAX 仅适用于初始页面加载并随后pjax接管。这是HTMLDecor的方法。

于 2012-10-13T05:27:32.043 回答
0

Rails 4.0 现在带有 Turbolinks。Turbolinks 与 pjax 非常相似,只是它从服务器加载整个页面,然后更新页面的正文和标题,而不是重新加载它。不需要在服务器端进行任何修改——服务器总是返回整个页面。这使得 HTTP 缓存变得微不足道。

于 2012-12-21T05:12:47.587 回答