降低Google App Engine成本

时间:2013-08-27 13:43:44

标签: javascript python google-app-engine

我们有一个Javascript,每天为数百万个浏览器提供服务。 为了处理负载,我们决定使用Google App Engine。

这个Javascript的一个特别之处在于每个公司使用我们的服务(非常)略有不同。

到目前为止,我们通过main.py提供服务来处理这个问题,这基本上是: - 阅读JS静态文件并打印出来 - 打印自定义代码

我们在每次加载时都这样做,而且成本开始真正增加。

除了每个客户拥有一个静态版本的文件外,还有其他方法可以考虑减少我们的账单吗?使用memcache而不是读取文件会以任何方式降低价格吗?

非常感谢。

3 个答案:

答案 0 :(得分:3)

我假设你在实例时间付了很多钱。从GAE文件系统读取相当慢。因此,最简单的优化方法只能在实例启动时从静态文件中读取一次,将js文件保存在内存中(即全局变量),然后打印出来。

其次,确保客户缓存您的js,这样当他们重新加载您的页面时,您不必再次向他们提供js。

下一步是将js文件作为静态文件提供,如果可能的话。如果js文件很大并且你正在消耗CPU周期只是打印它,这将节省一些钱。在这种情况下,让生成HTML的处理程序将适当的URL插入到相应的js文件中,而不是每次都重新生成整个js。您可以节省资金,因为您不会为作为静态文件的文件收取实例时间,而且它们可以缓存在边缘缓存(GAE的CDN)中,并且您不会为它们收取任何费用。

答案 1 :(得分:2)

以下是一些在不使用cdn的情况下进行更优化的方法。

是的,添加内存缓存层以缓存所有整个输出,并添加一个使用实例内存的额外实例缓存。这可以通过添加模块全局字典并在其中添加键/值缓存来完成。但您也可以使用LRUCaching库,这样就不会使实例过载。

最后最便宜的是使用cdn并将原点指向您的应用引擎应用,如果您的输出不需要太频繁修改,您可以短时间或长时间缓存这些结果。

这是一篇关于Ben Kamens实例缓存的完整博客文章: http://bjk5.com/post/2320616424/layer-caching-in-app-engine-with-memcache-and-cachepy

答案 2 :(得分:0)

如果你通过提供静态文件来使用Javascript(我假设你现在所做的那样)。

  1. 您可以使用memcache(它可以降低成本,因为处理程序将更快地服务器 - 更少的实例)。
  2. 您可以使用webcache来缓存simple example(它会减少重新读取 - 而不是实例)。
  3. 您可以支持高级http标头enter link description here(需要重写Google静态文件处理程序)(如果不更改,它会减少重新读取+加速重新读取 - 不是实例或更快的实例和更少的实例)。< / LI>