【发布时间】:2010-12-28 04:58:03
【问题描述】:
我编写了一个 Google App Engine 应用程序,它以编程方式生成一堆 HTML 代码,这些代码对于每个登录我的系统的用户来说都是相同的输出,我知道当代码运行时这将是低效的投入生产。所以,我试图找出缓存生成页面的最佳方法。
最可能的选择是生成页面并将它们写入数据库,然后根据上次更新代码的时间检查给定页面的数据库 put 操作时间。然后,如果代码比上次放入数据库的代码更新(对于特定的 HTML 请求),则将生成和提供新的 HTML,并缓存到数据库中。如果代码比上次放入数据库的代码更旧,那么我将直接从数据库中获取 HTML 并提供它(因此避免了生成 HTML 的所有 CPU 浪费)。我不仅希望尽量减少加载时间,还要尽量减少 CPU 使用率。
但是,我遇到的一个问题是,我不知道如何以编程方式检查上传到应用引擎的代码版本何时更新。
我愿意接受有关此方法或缓存生成的 html 的其他方法的任何建议。
请注意,虽然 memcache 可以在这种情况下提供帮助,但我认为这不是最终的解决方案,因为我真的只需要在代码更新时重新生成 html(而不是每次 memcache 过期)。
【问题讨论】:
-
但是……这就是 memcache 的用途!除非生成 HTML 需要非常非常长的时间,否则你想多了。
-
此外,App Engine 内存缓存模型似乎只缓存数据存储访问,而不是代码生成:来自:code.google.com/appengine/docs/python/memcache/…——内存缓存通常与以下模式一起使用:应用程序从用户或应用程序。应用程序检查满足该查询所需的数据是否在内存缓存中。如果数据在内存缓存中,则应用程序使用该数据。如果数据不在 memcache 中,应用程序会查询数据存储并将结果存储在 memcache 中以供将来请求。
-
@Alexander - 你可以在内存缓存中放任何你想要的东西,他们提到的是典型的用例。
-
您好,谢谢。很高兴知道!
-
+1 - 好问题。我无法相信(不断地)对问题缺乏任何形式的支持。一个好的问题和一个好的答案一样有价值,因为问题通常是人们如何开始寻找答案......
标签: html google-app-engine caching