Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Ajax预加载(=缓存)完整的网站;可能的问题?_Javascript_Jquery_Ajax_Performance_Caching - Fatal编程技术网

Javascript 使用Ajax预加载(=缓存)完整的网站;可能的问题?

Javascript 使用Ajax预加载(=缓存)完整的网站;可能的问题?,javascript,jquery,ajax,performance,caching,Javascript,Jquery,Ajax,Performance,Caching,我目前正在为一位建筑师建立一个投资组合网站,该网站的页面上有大量的图片。 导航是通过history.js(=AJAX)完成的。为了节省加载时间并使整个过程更加“快速”,我编写了一个脚本,在页面正文中爬行到其他页面的链接,并在后台自动获取这些链接。到目前为止,它就像一个符咒 它基本上保留了一个包含所有链接的队列数组。setTimeout()-函数通过它们工作,并使用jQuery$.ajax()获取每个页面。生成的HTML存储在Javascript对象中 现在,我的问题是: 在不同的机器/浏览器/操

我目前正在为一位建筑师建立一个投资组合网站,该网站的页面上有大量的图片。 导航是通过history.js(=AJAX)完成的。为了节省加载时间并使整个过程更加“快速”,我编写了一个脚本,在页面正文中爬行到其他页面的链接,并在后台自动获取这些链接。到目前为止,它就像一个符咒

它基本上保留了一个包含所有链接的队列数组。setTimeout()-函数通过它们工作,并使用jQuery$.ajax()获取每个页面。生成的HTML存储在Javascript对象中

现在,我的问题是: 在不同的机器/浏览器/操作系统上使用此功能时,可能会出现哪些问题

我在想:

  • 最大javascript对象/变量大小(获取的HTML存储在javascript对象中)
  • 可能的性能问题
  • 异步请求的最大数量
  • …你能想到什么吗
提前多谢了


业余程序员

您应该将异步请求排队,并且一次只启动一个


由于您将所有内容都存储在变量中,在某个时候您(浏览器)可能会消耗大量内存,整个过程可能会变得非常缓慢。我建议您将缓存的大小限制为一定数量的页面。

您也可以尝试不存储已获取的内容,只需获取内容并将其丢弃即可。浏览器仍然会将获取的页面和图像缓存在其内部存储器中,因此后续加载速度会快得多(当然,如果ajax库没有强制禁用缓存,即使用POST)

尽管在客户端缓存整个网站可能是一个好主意,但会有很多问题:

  • 记忆
  • Web服务器上不必要的负载
  • 将非索引页加载到内存中
  • 一些用户对他们的互联网有限制,因此在这种情况下加载整个网站是不明智的
  • 一旦用户导航或刷新,整个“缓存”就消失了
我要做的是首先尝试优化服务器端。 添加一系列从数据库到用户的缓存机制,“Expires”标题确实可以帮助您

如果这没有帮助,我会考虑在脱机缓存中缓存一些页面(哪些页面由您决定),请参见()

这样,即使在重新加载页面时也很安全,将内存保持在最小,只加载所需的内容


PS:不要试图重新发明浏览器已有的东西:p

除了我在回答中说的:“你能想到的任何东西”都有点模糊之外,我建议你编辑你的问题,使其尽可能具体,或者它可能以“不具建设性”结束(请参阅)。问题?占用了那个人可能永远不会使用的带宽?谢谢你的回答。我已经将异步请求限制为每次2个。当一个请求完成并且该请求的所有映像都已完全加载时,将触发下一个请求。我很好奇是否可以检测到最大内存使用量?谢谢。我想可能的问题大于优点,所以我将坚持使用服务器端缓存。脱机缓存对我来说似乎有点过头了,至少对于一个简单的公文包来说是这样。只需添加缓存头,就可以解决您的许多问题:)