2013-08-27 94 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