2013-08-27 64 views
2

我们拥有一块JavaScript,每天为数百万浏览器提供服务。 为了处理负载,我们决定使用Google App Engine。降低Google App引擎费用

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

到目前为止,我们被服务通过main.py一切基本上去处理这个: - 阅读JS静态文件和打印 - 打印自定义代码

我们这样做是在每个负载和成本开始真正地加起来。

除了为每位客户提供静态文件版本之外,还有其他方式可以考虑减少账单吗?使用memcache而不是读取文件会以任何方式降低价格?

非常感谢。

+0

是刚读取和打印或读取,修改和打印的静态文件?或者只是查找使用哪个静态文件? – Faisal

+0

只需查看一下,只需阅读并打印,然后打印额外的自定义代码。 –

回答

2

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

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

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

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

3

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

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

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

0

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

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

查看midification + eTags的领域 - 这是有点棘手的http://en.wikipedia.org/wiki/List_of_HTTP_header_fields – Chameleon