2010年12月6日 星期一

App Engine SDK 1.4.0 發佈了

原文網址(英文):Google App Engine Blog: Happy Holidays from the App Engine team - 1.4.0 SDK released: "Happy Holidays from the App Engine team - 1.4.0 SDK released"

主要有以下這些改進:

1.The Channel API:這是一種現在很流行的技術叫Server Push,傳統上http協定都是一個request一個response,所以頁面都是固定的,如果要動態更新網頁卻又不refresh整個頁面的話(refresh整個頁面螢幕會閃一下,跟手動按F5重新整理是一樣的看起來就很low),就要使用前幾年很流行的ajax技術,只更新一部份網頁的方式來模擬,但缺點就是背地理需要有一個javascript反覆的向server要求更新,因此網路流量負擔會很大,若是拉長更新的頻率,則訊息又會不夠即時的更新到client這邊來.
因此Server Push就是ajax的改進,若client端向server發送request可是server端沒有資料要更新時,server不會像傳統ajax那樣直接傳回空值,可是會keep住這個request盡量久的時間,等到server有資料要更新了,就可以在第一時間傳回給client,當然keep request的時間還是有限制,等到快timeout了還是沒有更新也要回傳空值給client端,讓client端發出下一次的request,但是整體上來說request的頻率還是比傳統ajax少很多了
Channel API就是把這些功能給包裝好讓gae的使用者可以較方便的使用

如果使用請看:
The Channel API (Python)
The Channel API (Java)

2.Always On:app engine是個平行化的運算架構,因此當你的網站負擔增加時,google會自動的幫你產生新的instance來處理增加的負擔量,可以把它想成複製人,一個不夠就自動幫你複製越來越多,當loading變輕時,閒置的instance又會被關閉回收以節省google整個系統的資源,所以loading重的站instance數目會很多,而完全沒人造訪的站instance的數目甚至會是0個
如果你的站是屬於那種有些時候完全沒人,有些時候人來很多的話,由於創建一個新的instance會需要花時間,因此在人潮波峰前的一段時間回應時間會下降(複製人還在生),如果你不想要這樣
現在always on這功能可以讓你選擇特地幫你保留幾個instance是永遠存在的,即使都沒有人在使用也不會被回收,當然這保留是有代價的,每保留三個instance每個月要花9鎂

3.Warm Up Requests:承(2),如果你有花錢買保留instance,那就可以在app.yaml裡用這指令指定叫instance起來待命

4.No more 30-second limit for background work:本來的response都限制在30秒內要回應,現在放寬成Task QueueCron可以處理長達10分鐘的request,需要一些較長的資料庫操作或運算不用再受到timeout的限制了

5.放寬了一些api可傳送資料大小的限制 包括以下這些
* URLFetch 接收的大小本來限制1MB放寬到32MB(可以看youtube了?).不過request的大小仍維持1MB
* Memcache batch get/put 本來限制1MB放寬到32MB
* Image API 輸入和輸出的影像大小都從本來限制的1MB放寬到32MB.
* Mail API 外寄郵件的附件大小從1MB放寬到10MB (收信的附件大小仍維持10MB)
* datastore batch get/put/delete 本來限制一次批次處理500筆,為了讓(4)的改進有意義,所以這筆數限制已經拿掉了

6.現在可以下載app上的code:不過只限制於當初上傳的那個developer才有資格下載,這功能可以在admin面版關掉,但是一但關掉就無法再開啟!!