【问题标题】:Reducing Google App Engine costs降低 Google App Engine 成本
【发布时间】:2013-08-27 13:43:44
【问题描述】:

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

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

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

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

除了为每个客户提供文件的静态版本外,您还有其他方法可以减少我们的费用吗?使用内存缓存而不是读取文件会以任何方式降低价格吗?

非常感谢。

【问题讨论】:

  • 静态文件只是读取和打印还是读取、修改和打印?还是只是查找要使用的静态文件?
  • 只需查找,只需阅读和打印,然后打印额外的自定义代码。

标签: javascript python google-app-engine


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    这里有一些方法可以在不使用 cdn 的情况下对其进行更多优化。

    是的,请添加 memcache 层以缓存所有整个输出,并添加一个使用实例内存的附加实例缓存。这可以简单地通过添加一个模块全局字典并在那里添加你的键/值缓存来完成。但是您也可以使用 LRUCaching 库,这样您就不会超载您的实例。

    最后,最便宜的方法是使用 cdn 并将源指向您的应用引擎应用,如果您的输出不需要过于频繁地修改,您可以将这些结果缓存短期或长期。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-12
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2022-01-14
      相关资源
      最近更新 更多