使用隐藏的div缓存数据

时间:2009-12-03 16:29:58

标签: php caching html hidden

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

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

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

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

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

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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代码显然不是您需要输入的内容,但您可能会看到我的观点。

答案 2 :(得分:1)

这应该有用,是我能想到的最好的解决方案。是否存在任何安全隐患确实取决于您的表单及其工作方式 - 如果没有实际代码,任何人都无法对此进行诊断。

答案 3 :(得分:-1)

如何使用APCMemcached

他们会允许你保持html标记干净,没有可能产生问题的“隐藏技巧”(用户没有启用css?使用IE6?可访问性怎么样?)

取决于您的需求,但一般来说,页面必须包含它必须包含的内容,而不是其他内容。

答案 4 :(得分:-1)

另一种方法是set the "Expires" or "Cache-Control" HTTP headers表单。

如果您在将来的1小时内为网址http://example.com/form.html设置了“过期”标题,那么下次用户导航到该表单的一小时内将加载HTML而不会触及服务器。

如果您正确地对图像/ CSS / JS进行了版本设置并为它们提供了远期的“Expires”标题,那么就不会有任何服务器往返,而且您将帮助其他页面的性能。