【问题标题】:how do you cache information using ajax, php, or jquery?如何使用 ajax、php 或 jquery 缓存信息?
【发布时间】:2011-10-18 05:12:59
【问题描述】:

我正在尝试了解缓存数据的使用。我知道一点。它有助于更​​快地加载数据,因为它将信息存储在浏览器中?

如果有人能帮助我更好地理解这一点,我将不胜感激。此外,是否可以缓存输入字段中的值并检索或存储以供以后使用?如果是这样,有人可以向我展示如何在 PHP、ajax 或 jquery 中实现它的示例,或者指导我学习教程吗?

谢谢!

【问题讨论】:

  • 您要缓存哪些信息?
  • 我正在尝试缓存文本并能够知道文本并在以后使用它来检索它
  • “文本”?就像在脚本中使用的文本一样?
  • 是的,文本。然后使用该测试将其输出到页面上。也许像 mysql 数据库类型一样检索它?
  • 我查看了您之前的问题。您想在文本输入字段上实现自动完成功能吗?如果是这样,您是要自动完成用户之前输入的内容,还是像在您进行新的 Google 搜索时那样进行预测性自动完成?

标签: php jquery ajax caching


【解决方案1】:

这一季的流行是使用 localStorage 在客户的机器上存储数据。 例如:http://php-html.net/tutorials/html5-local-storage-guide/

【讨论】:

  • 非常有趣!我对html5编码不太熟悉,因为我还是个初学者。比如接口Storage(....)有什么作用?
  • @andrewliu 接口只是 localStorage 和 sessionStorage 对象公开的方法的定义。它原样取自规范dev.w3.org/html5/webstorage
【解决方案2】:

缓存是位于数据源(数据库、硬盘驱动器、网络资源等)和需要访问该数据源的东西之间的东西。这个想法是,从缓存访问数据应该比直接从数据源访问数据更快

如果您想存储文本字段值以供以后使用,(不了解您的设置细节的更多信息),我认为您正在寻找 cookie。

当用户在文本框中输入文本时,使用javascript到set a cookie

用户下次访问该页面时,您可以使用 javascript 检索他们在文本框中键入的内容,以查看 cookie 是否存在,如果存在,其中有什么。

请注意,此方法会将数据缓存在用户的计算机上,而不是在您的网络服务器上。如果您想将这些值存储在 Web 服务器上,那么您需要在用户提交表单时将它们写入文件或数据库,或者使用 AJAX 将输入表单的值异步发送到 PHP 后端,因此它可以将值存储在那里。

如果您可以更具体地说明您想要缓存/存储的什么以及您认为应该这样做的为什么,那么我们可以为您提供通过一些代码示例获得更好的质量答案。

请准确描述您的问题是什么,以及您期望解决方案做什么。

编辑:从您的previous question 看来,您需要某种自动完成功能。有两种:

1) 自动完成用户之前输入的内容:

当用户提交表单时,您可以做以下 3 件事之一:

a) 将文本输入存储在数据库中。当用户下次访问该页面时,使用 PHP 将之前的搜索嵌入到 javascript 中(可能作为数组)。当用户在文本框中键入时,使用 javascript 来显示自动完成框。 (对于用户来说更快,如果您希望为每个用户存储大量以前的输入,则不太实用)

b) 将文本输入存储在数据库中。当用户访问页面时,使用 AJAX 在他们键入时检索最可能的匹配项。 (对用户来说速度较慢,但​​如果您期望每个用户有大量已保存的搜索,则更好)

c) 将文本输入存储在 cookie 中。当用户提交表单时,将输入保存在 cookie 中。您可以将多个搜索存储在多个 cookie 中,或者将 1 个搜索存储在 1 个分隔的 cookie 中。请注意,cookie 的最大大小(包括其名称和其他详细信息为 4K,因此您应将其主体保持在 4000 字节以下)。

注意:如果这样配置,浏览器应该自动自动完成用户之前输入的内容。您想要自己实现这种类型的自动完成功能的唯一原因是您想要某种跨浏览器或跨系统功能。

2) 预测性自动完成,例如在进行 Google 搜索时。

此方法的工作原理与 1b 基本相同。您将在数据库中存储以前或建议的搜索词列表。当用户在输入字段中键入文本时,您的 AJAX 请求将获取用户正在搜索的最有可能的候选对象。

【讨论】:

  • 如果有数百万用户,如果将用户的输入存储在数据库中会不会更慢?让服务器在数据库中搜索用户之前的输入需要很长时间,对吗?
  • 显然,您搜索的信息越多,所需的时间就越长。您应该研究一些高级数据结构来有效地存储这些信息。乍一看,我认为树形结构似乎更适合此目的。
【解决方案3】:

这取决于。你几乎每次都可以缓存图片、css、js,因为它们总是一样的。你不需要做任何事情,它们应该会自动缓存。

您还可以缓存 GET 和 POST 响应,但这有点负责任。您必须知道应该冲洗什么、何时以及多久冲洗一次。

要单独通过 jQuery 打开 GET 请求的缓存,请使用

$.ajax({
    'cache':true, 
    'url'  :'ajax.php',
    //and more parameters

});

【讨论】:

  • 我正在尝试缓存输入字段中的文本值。我怎么能知道它的价值是什么?如果我在输入字段中输入,有没有办法查看该值?
  • “你不需要做任何事情”除了正确配置你的网络服务器
  • @MichaelMior:默认(apache2)服务器提供正确的响应代码并正确缓存结果。
  • @andrewliu:缓存输入字段?真的,在堆栈溢出之前不要考虑缓存
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 2019-08-16
  • 2015-02-01
  • 1970-01-01
  • 2013-09-11
  • 2011-01-12
  • 1970-01-01
相关资源
最近更新 更多