用于加载速度的 PHP 和 Javascript/Ajax 缓存 - JSON 和 SimpleXML

标签 php javascript ajax api caching

我有一个网站可以使用一些 JSON 和 XML API 从其他网站获取内容。为了防止加载问题和限制问题,我执行以下操作:

  1. PHP - 使用 PHP 显示缓存的内容(如果有)。
  2. PHP - 如果从未缓存过内容,则显示一个空的错误页面并返回 404。(第二次加载页面时会正常显示“成功 200”)
  3. Ajax - 如果数据库中不存在日期字段,或者当前日期早于存储日期,则从 API 加载/添加内容。将 future 的日期添加到数据库中。 (这使页面加载速度更快,并且 Ajax 会在页面加载后缓存内容)。

我使用 Ajax 只是为了运行 PHP 文件。我使用 PHP 获取内容。

问题

  1. 因为我在内容加载后缓存内容,所以用户将看到旧内容。这是向用户展示新内容的最佳方式。我正在考虑使用 Javascript 自动重新加载页面或消息提示。其他首选方式?
  2. 如果我使用很多 API:s,Ajax 加载时间将会很长,并且出现错误的风险会更大。有没有聪明的方法来分担负载?

第二个问题很重要。

最佳答案

Because I cache the content AFTER it was loaded the user will see the old content. Which is the best way to show the NEW content to the user. I'm thinking automatically with Javascript reload the page or message-nag. Other prefered ways?

我认为您不应该通过 javascript 重新加载页面,而只需使用 Jquery's .load() .通过这种方式,无需重新加载整个页面即可将新内容插入到 DOM 中。也许您突出显示新插入的内容是通过 addClass() 添加一些 CSS .

If I use very many API:s the Ajax loadtime will be long and it's a bigger risk that some error will accur. Is there a clever way of splitting the load?

您不应该首先拆分内容。你应该尝试minimize number of HTTP requests .如果可能,您应该使用某种消息队列(例如 beanstalkd、redis)离线执行所有 API 调用。还将数据缓存在内存数据库中,例如 redis。感谢http://redistogo.com,您可以获得一个免费的 redis 实例.要连接到 redistogo,您可能应该使用 predis

关于用于加载速度的 PHP 和 Javascript/Ajax 缓存 - JSON 和 SimpleXML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6580096/

相关文章:

javascript - jquery中的Ajax调用刷新Django中的数据库模型

php - 从数据库加载当前用户

javascript - Angular 单元测试类型错误: Cannot read property 'subscribe' of undefined

php - Yii2:具有高级配置的通用 Assets

javascript - iframe onload 事件在附加到某些 div 后触发

javascript - 如何在 Javascript 对象数组中查找特定键的所有唯一值?

ajax - 以ajax形式编码特殊字符(asp mvc)

php - 接下来要学习什么才能将额外功能应用于 CMS 模板?

php - 我使用 mysql 命令没有从 ssh2_exec() 得到任何结果

php - 防止 WordPress 的默认输入清理