我正在尝试通过执行以下操作来加快我的ajax Web应用程序中的响应时间:
假设用户请求内容不变的页面(例如Web表单)。当用户发出不同的请求时,我通过将表单放入隐藏的div中来“缓存”表单。在显示新信息之前。因此,表单基本上仍然在浏览器中加载,但对用户不可见。如果用户再次请求相同的表单,则从隐藏的div加载。这比表单到服务器的往返要快得多。
我确实意识到使用大量数据可能会降低性能,因为浏览器会在内存中保留很多内容。但是我会限制以这种方式“缓存”多少。
现在,我自己想出了这个,这就是为什么我想知道是否有更好/已建立的方式来做到这一点。它按预期工作,但我不知道可能的缺点是什么(可能与安全相关?)。
我将不胜感激任何建议。 非常感谢。
答案 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)
他们会允许你保持html标记干净,没有可能产生问题的“隐藏技巧”(用户没有启用css?使用IE6?可访问性怎么样?)
取决于您的需求,但一般来说,页面必须包含它必须包含的内容,而不是其他内容。
答案 4 :(得分:-1)
另一种方法是set the "Expires" or "Cache-Control" HTTP headers表单。
如果您在将来的1小时内为网址http://example.com/form.html
设置了“过期”标题,那么下次用户导航到该表单的一小时内将加载HTML而不会触及服务器。
如果您正确地对图像/ CSS / JS进行了版本设置并为它们提供了远期的“Expires”标题,那么就不会有任何服务器往返,而且您将帮助其他页面的性能。