3

我正在尝试通过执行以下操作来加快我的 ajax Web 应用程序的响应时间:

假设用户请求一个内容不变的页面(例如一个网络表单)。当用户提出不同的请求时,我通过将表单放在隐藏的 div 中来“缓存”表单。在显示新信息之前。所以表单基本上仍然加载在浏览器中,但对用户不可见。如果用户再次请求相同的表单,它会从隐藏的 div 中加载。这比为表单往返服务器要快得多。

我确实意识到使用大量数据这样做可能会降低性能,因为浏览器会保留大量内存。但是我会限制以这种方式“缓存”的数量。

现在,我自己想出了这个,这就是为什么我想知道是否有更好/成熟的方法来做到这一点。它按预期工作,但我不知道可能的缺点是什么(也许与安全相关?)。

我将不胜感激任何建议。非常感谢。

4

5 回答 5

2

我以前做过。这可能是一种有用的技术。只需确保数据准确并且您支持禁用 JS 的用户代理即可。

编辑:并且没有更好的解决方案。

于 2009-12-03T16:45:22.607 回答
1

这应该可行,并且是我能想到的最佳解决方案。是否存在任何安全隐患实际上取决于您的表单及其工作方式——没有实际代码,没有人能够诊断出这一点。

于 2009-12-03T16:56:28.203 回答
1

将表单的 HTML 代码存储在 JS 变量中可能比使用隐藏 div 解释此 HTML 代码(表单 + 表单字段 + 各种标记)更有效。

如果您的表单代码与页面同时生成,只需将其打印在 JS 变量中即可:

<script language="javascript">
var myFormCode = '<? echo $myFormCode; ?>';
</script>

(那是如果你使用 PHP ......其他语言应该不远)

如果您的表单代码稍后生成,您可以通过 JSON 将其作为文本发送:

<?php
  echo json_encode($myFormCode);
?>

...然后在需要时构建您的表单,在客户端使用类似的东西:

<script language="javascript">
  myRealFormDiv.innerHTML = eval(myJSONEncodedTextIGotViaAJAX);
</script>

JS 代码显然不是您需要输入的内容,但您可能明白我的意思。

于 2009-12-03T16:46:07.783 回答
-1

使用APCMemcached怎么样?

它们将允许您保持 html 标记的清洁,而不是可能产生问题的“隐藏技巧”(用户没有启用 css?使用 IE6?可访问性如何?)

取决于您的需要,但通常页面必须包含它必须包含的内容,仅此而已。

于 2009-12-03T16:51:42.003 回答
-1

另一种方法是为表单设置“Expires”或“Cache-Control”HTTP 标头

如果您在未来 1 小时为 url 设置“Expires”标头http://example.com/form.html,则用户下一小时内导航到该表单的下一次 HTML 将在不接触服务器的情况下加载。

如果您正确地对图像/CSS/JS 进行版本控制,并为它们提供未来的“过期”标头,那么将不会有服务器往返,而且您将有助于提高其余页面的性能。

于 2009-12-03T17:18:17.747 回答