惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
Jina AI
Jina AI
Microsoft Security Blog
Microsoft Security Blog
IT之家
IT之家
V
Visual Studio Blog
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 聂微东
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
大猫的无限游戏
大猫的无限游戏
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
D
Docker
MyScale Blog
MyScale Blog
小众软件
小众软件
云风的 BLOG
云风的 BLOG
美团技术团队
Microsoft Azure Blog
Microsoft Azure Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 【当耐特】

博客园 - K_Reverter

甘南-青海湖九日游(一.出发) Jla框架介绍(五) 设计模式:模块和实例管理 Jla框架介绍(四) 配置管理模式 Jla框架介绍(三) 资源引用和Sprite模式 Jla框架介绍(二) 核心和基本规范 - K_Reverter - 博客园 Jla框架介绍(一) 导言和发展历程 解散了地图接口讨论群 重新趋于稳定 黄山游记(三.总结和经验) 黄山游记(二) 黄山游记(一) 杭州西湖长线暴走行程 在杭州的日子 求助:关于IE之中获取鼠标位置 离开腾讯了 谁在频繁的访问我的服务器接口?请和我联系 - K_Reverter - 博客园 想离开腾讯了 关于geohash的简单探讨 在GAE数据库之中保存文件
我的网站已经全部运行在GAE下
K_Reverter · 2009-05-01 · via 博客园 - K_Reverter

        基于对现在虚拟主机服务很是失望,虽然我从来没有接触过Python,还是努力的将网站迁移到了GAE下,当然,这之中最重要的考虑还是希望在这个过程之中能够学到一些东西,随着今天完成了最后一部分:铁道换乘算法的设计,现在的网站可以说是全部运行在GAE上了。

        因此我将我的网站迁移过程之中的一些简单的心得提供出来共享一下:

        1.GAE提供的GQL虽然确实是功能很少,用起来有时候会让人想摔电脑,不过从另一个角度来讲,因为GQL要实现的是一个高性能的数据存取系统,很多时候就不得不限制一些功能,而这些功能实际上并不是不能实现,而是需要你仔细的分析你的数据,进行合理的数据库设计,合理的索引设计,合理的查询,才能实现你的功能,现在大家用的一些SQL语句,有的是帮你在自动进行这个优化,有的不管性能是不是有问题,就直接运行。就GAE来讲,将性能有问题的部分进行限制,强制要求你在这些地方多下功夫进行优化,也是比较合理的做法。

        2.GAE的数据库存取实际上速度还是有限,反正我觉得比读文件要慢多了,因此我强烈建议对只读的数据(运行期间不改动的)以文件的方式来读取,虽然这种做法有点原始,可确实能提升性能,我的几个复杂一些网页(比如地名查询)开始总是CPU超限,后来我将我的地名数据库建立成各种索引放在GAE上,现在平均CPU使用只有两位数(在后台里面看到的数字)

        3.memcache是非常有用的东西,用来做服务器端缓存真是再好不过了,如果你的页面并不要求很实时,将你的页面输出之前将内容保存到memcache之中,下次直接读取返回是提高程序性能的有效方法。

        4.你可以直接调用线上的数据进行调试。很多情况下,你本地的应用可能没有数据或者不是很全,这样给调试带来麻烦,其实你完全可以直接调用线上的数据进行调试,例如你可以在py文件之中加上如下代码:

if os.environ['SERVER_SOFTWARE'].startswith('Dev'):
    
from google.appengine.ext.remote_api import remote_api_stub
    
def auth_func(): return 'aaa@gmail.com''*********'
    remote_api_stub.ConfigureRemoteDatastore(
"dituren-service"'/data/remote_api',auth_func)
#记住,其中的用户名,密码,appid,remote_api路径都需要改成你自己的

        加入以上代码之后,你的应用在本地调试的时候调用远程数据库了,你上传到服务器的时候不删除此代码也不会产生问题,不过我总觉得将用户名和密码写在源码里面比较别扭吧。

        基本上就这些,对了再总结一下:GAE确实很强大。