如何正确加载此类网站。目前它正在花费大约10秒的时间来加载,这显然太长了。
暂时假设的一些事情:
基本上我正在创建一个人们可以转到获取有关游戏的有用信息的网站。该站点使用游戏API来提取主要以数组形式的数据。
以下是入门阵列(职业)的示例:http://pastebin.com/X33k0NKw
其中一个阵列来自(其中一位英雄):http://pastebin.com/fA4tjgxd
来自那个的项目数组(也很大):http://pastebin.com/gaqba3i7
现在从item数组我进一步获取文件,该文件为我提供了可以在工具提示中使用的数据。
现在我将所有这些数据都来自服务器,并且所有数据都需要10秒才能完成。太久了。您认为我需要设置数据库并获取数据。我打算。但是我不可能正确地做到这一点,所以我希望能够在我开始执行MySQL之前完成这项工作。
所以我的问题是我应该在寻找什么来帮助解决这类问题?
答案 0 :(得分:3)
处理任何RESTful API数据时,我的经验法则是:RESTful API不是数据库&永远不应该用于根据请求直接实时调用数据。它们根本不是为了速度而建造的。特别是对于这么大的数据阵列。数据阵列很大程度上是获取数据和组合的重量。对数据采取行动会降低您的网页速度。
解决方案?如果RESTful API调用填充了数据,则需要在本地数据库或文件系统中缓存这些数据,然后对存储在数据库或文件系统中的数据进行操作。即使访问API之间的缓存时间是5秒,在本地访问它们的速度仍然很快。
所以这意味着你的设置是这样的:
[Your Page] -> [Your Code] -> [Your Call to the RESTful API]
您需要添加一些本地存储/缓存层:
所以这意味着你的设置是这样的:
[Your Page] -> [Your Code] -> [Your Local Storage of API Data] -> [Your Call to the RESTful API to Update Local Storage]
现在,您可以在数据库中本地缓存数据,也可以在文件系统上缓存数据。我已经处理过RESTful API,其中数据只需要每天更新一次,以及缓存加起来可能只需一分钟的系统。但即使缓存是一分钟,这可能足以帮助您的系统处理数据的大小。
除此之外,您还应考虑在前端功能中添加一个AJAX层,该层将包含在我上面的那些简短图表的[Your Page]
区域中。
AJAX代表异步JavaScript。像这样的数据问题的一般概念是核心页面HTML是由您使用的任何语言的标准方法呈现的。然后在HTML加载之后,在一些基本时间间隔,用户交互,两者的混合,以及其他东西上进行JavaScript调用...... - 它通过来自核心应用程序框架的JSOP请求数据。然后JavaScript会根据该数据更新页面上的元素。
所以,你可以分解[Your Page]
功能,就像这样:
[您的服务器端脚本呈现页面] - > [浏览器加载HTML,CSS& JavaScript] - > [JavaScript AJAX调用调整您重入的HTML中的内容]
这就是你的核心页面永远不会重新加载。它就像一个等待内容填充的框架一样。并且AJAX调用用内容填充该框架。