在Google App Engine中使用304 Not Modified状态码来提速

标签:Google App Engine, Python

最近用GAE做了个图像上传的站点,为了提升速度,我在服务器端采用了缓存技术,但这并未榨干GAE的最后一点能量。
实际上,由于我的图片是不会改变内容的,所以如果强制让客户端浏览器也缓存的话,就能减少很多流量,且不用访问缓存和数据库了。

在GAE中使用记录系统

标签:Google App Engine, Python

在GAE中可以使用Python的标准模块logging,而且记录是可以直接在GAE的后台看到的,非常方便。
这里有篇讲述如何在GAE中使用记录系统的文章

先简单介绍下logging。
logging中有6个级别的事件记录:CRITICAL、ERROR、WARNING、INFO、DEBUG和NOTSET。
其中前5个分别用critical、error、warning、info和debug函数来记录。

因为使用非常简单,我就直接给演示代码了。

Google App Engine的模块和Handler Script缓存

标签:Google App Engine, Python

正如GAE文档中所述,GAE会缓存一些模块和Handler Script,避免每个request都重新载入。

这里有篇《Google App Engine 对 module 的缓存时间》,你可以看到模块是怎么被缓存的。

要让Handler Script被缓存,需要为这个Handler Script定义一个无参的main函数,并且请求必须要调用这个main函数。(一般来说,我们的应用程序都是先在main函数里进行的,所以这点基本符合。)

在Google App Engine中实现URL伪静态

标签:Google App Engine, Python

在Apache和IIS等Web服务器上,实现伪静态是通过URL重写的方式;但在GAE中方式则不同,需要你在Python代码中实现,不过因此也更为强大和简单。

先来看看伪静态有什么用:
这是一个动态页面:
http://www.keakon.cn/bbs/viewthread.php?tid=35&page=100
这是一个伪静态后的动态页面:
http://www.keakon.cn/bbs/thread-35-100-1.html
这2个页面都是一样的,不过下面的网址明显要短些,而且更符合搜索引擎的“口味”。
它的实现是用URL重写的方式,把thread-开头的链接让viewthread.php来处理,并将后面的2个数字赋值给tid和page。
至于这2个值的获取,在PHP中是通过$_GET这个全局变量来获取的。

在Google App Engine中使用缓存

标签:Google App Engine, Python

由于GAE的数据库很慢,所以当需要一些更快速的持久性存取操作时,数据库就显得力不从心了。
好在Google也考虑到这个问题,提供了Memcache API来解决性能问题。方法就是把经常使用的、在数据库中查询比较耗时的数据放在内存中缓存起来,然后直接访问内存即可。

在Google App Engine中操作图像

标签:Google App Engine, Python

操作图像大概是Google App Engine中最有趣的功能了。
由于GAE不允许浏览者上传文件到服务器,所以存放到数据库就成了不二选择。可喜的是,如果你只是存储和显示图片,甚至连图像API都不需要用到,直接当成db.Blob类型的数据来使用即可。而且由于Google的慷慨,数据库空间是不限的,你可以在数据库中存放任意大小的文件(不过有流量限制)。

« 看看还有什么好玩意