【问题标题】:Go back link without refresh返回链接而不刷新
【发布时间】:2011-10-13 11:12:54
【问题描述】:

首先让我说我的标题并不能完全解释我的意思。问题是我创建了一个 jQuery 表来显示视频记录。在表格中有一个指向视频记录显示页面的链接。我在显示页面<a href="javascript: history.go(-1)"></a> 上有一个链接,可以让我返回带有jQuery 的结果页面。这个页面充满了javascript,包括对话框,每次我链接回这个页面时,它都会在加载时重新加载并显示对话框内容,然后再将其从屏幕上删除。我想知道是否有任何方法可以重定向回缓存页面或其他方法来减少加载量,因此在加载过程中不会显示不必要的信息。请并感谢您的帮助。

【问题讨论】:

  • 你不应该依赖浏览器缓存之类的东西来获得功能。您的后退按钮不应该尝试使用history.go,它应该是返回到逻辑上是当前页面的父页面的链接。你不能依赖history的顺序;用户可能从书签加载了您的页面,或者禁用了历史记录/缓存。

标签: php javascript jquery jquery-ui


【解决方案1】:

检查您的 PHP 页面发送的 HTTP 响应标头。如果它告诉浏览器不要缓存页面,那么它可能会强制浏览器不必要地重新加载。默认的 PHP 标头通常告诉浏览器不要缓存。检查这一点的一种方法是在命令行中使用curl

curl --head http://your.domain/foo.php

这只会告诉您页面将发送的标题。 ExpiresCache-ControlPragma 等标头涉及浏览器缓存。例如,我的一个网站上的典型 PHP 页面具有以下标题:

HTTP/1.1 200 OK
Server: nginx/1.0.4
Date: Tue, 26 Jul 2011 15:51:53 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Keep-Alive: timeout=20
Set-Cookie: PHPSESSID=osumsgkcn7c1rb8udba33epek6; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache

【讨论】:

  • 再想一想,我完全同意上面@meagar 的评论,关于根本不使用history.go()。但是,如果您仍然想使用它,标题是我要检查以解决您的问题的第一件事。
  • 我只使用 history.go() 是因为我认为它可以帮助我在单击返回链接后重新加载页面的问题。我只想返回上一页,而不必重新加载所有 javascript/jquery。可能吗?
  • 如何使用 JavaScript 设置一些 cookie 以在后续重新加载时保留页面的状态? jQuery 有一个jquery.cookie.js 插件,可以很容易地与 cookie 交互。
  • 你能告诉我如何做到这一点的例子吗?我浏览了 jQuery Cookie 插件,但文档很少,尤其是关于保留页面状态的文档。谢谢
  • 对于页面上要保存其状态的每个项目,您必须使用该 cookie 插件在每次更改时保存该项目的状态。当页面加载时,您还必须读取 cookie 并相应地设置状态。我不知道临时指南,但有a SO question here that might give you some clues
【解决方案2】:

好的,看看你的场景的方式:

1 - 你请求页面使用 ajax/json 吗

2 - 你有办法存储最后一页加载的内容

所以你可以:

1 - 使用 ajax + json 加载当前页面,并将其副本存储在变量(也称为当前)中

2 - 当用户点击一个链接(这会将他发送到另一个页面)时,当前页面(json)的内容存储在一个变量(也称为缓存)中,并且新的 json 覆盖当前变量值

3 - 当用户点击返回链接时,页面验证缓存变量是否有任何值,如果为真则加载该变量,否则从服务器调用内容。

这是基于我在这里实现的示例的极简主义想法:http://neogamabbh.com.br/en

【讨论】:

    猜你喜欢
    • 2021-01-20
    • 2012-05-02
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 2016-07-08
    • 1970-01-01
    • 2011-09-23
    相关资源
    最近更新 更多