先给出我的链接吧:http://photo.sharesh.cn (我的二级域名)或者http://shareshcn.appspot.com (Google提供的二级域名),总共三个页面,主页面是地图,然后有一个相册页面,然后就是照片列表页面。一直以来用Micolog建立GAE网站,但其实不算网站,只算是个blog而已,并且没有实际的写代码,所以不能算是我的GAE程序,而今天终于完成了这个GAE的网站,虽然可能只是写了几十行代码加上三个静态页面而已,但这确实是我经历了差不多三个多星期后的结果,从一无所知到开始查资料开始尝试代码最终完成这样的一个网站,酸甜苦辣只有自己知道啊。
一直以来我不满意国内主机的速度,加上为了以后分享照片和地图更加方便,所以准备将网站改版,决定全部搬到Google app engine上去。只是我的情况可能有点特殊:1,我有6000张照片,这样就差不多有12000个文件样子(缩略图和照片一样多),文件大概在500M样子,如果全部放到GAE,不太可能,因为文件数量和大小有限制;2,对于部分链接采用新的固定链接,而旧的URL能够转向到新的URL来。3,依然保留原有的地图内容,对于46个地方都需要在地图上标识出来(原来用的是Mapbar的JS做的WebMap,可以见sharesh.cn/default.htm)。对于以上三点,最终是如何解决的呢?
首先对于照片,由于国内主机速度慢,我不可能外联国内主机的图片,而国外主机,速度也不行,至少是访问速度,不过比国内主机要好一些,所以这样的话国内国外主机就全部被我放弃了,最多算是作为镜像吧。但我想起了以前的很好用的pwa.js,就是一个html+一个js做的相册,用的是Picasa Web Albums Data API,两个文件就能实现相册,强悍吧。可惜URL不是很好,不太符合我的SEO要求,再说如果这样的话,就是放两个静态文件给GAE,那也太大材小用了吧(虽然为了达到目的我不管是否大材小用,最近申请了Microsoft的Azure,准备折腾个镜像出来,不过难)。不过,照片我已经决定放Google PicasaWeb了,1G的免费空间干嘛不用,而且有这么好的API,图片还能够外联,速度又是非常快,不用太浪费了。于是重新整理了照片,将这6000多张照片全部上传上去了,结果也就用了一半还不到,太感谢Google了,让我所有的静态图片终于有地方存放了。最终的照片就是用Picasa Web Albums Data API做个二次开发了。
然后,需要考虑链接问题,最初的时候只考虑上海的2000张照片,所以就直接域名后面跟album了,而来到北京后又继续分享,然后做成了域名加beijing再加album的形式,因为我不想在网站FTP的根目录下变的乱糟糟的,上海的就准备是域名加shanghai加album了。如果是PHP主机,也许用.htaccess的301转向就可以达到目的,但GAE上如何处理呢?这确实是一个需要解决的问题,但GAE好像还不错,转向应该比.htaccess要强悍很多,具体我在技术总结中提到。
最后就是地图,早期用mapbar开发,是用ASP读取XML的形式,可以实现,但GAE不支持ASP的,所以这条路肯定死掉。但我后来给朋友做过一个WebMap的页面(请见杂谈:一个小型WebMap项目的架构和技术实现(GmapAPI+jQuery+XML)一文),其实就是一个静态页面,只是用了jQuery读取了XML文件而已,并且是用Google Maps API来开发的,总体来说,实现地图效果用Gmap API非常的简单方便,加上Mapbar的JS总觉得效率或者其他问题,所以不准备再使用。我在第一个星期设计整个GAE网站的时候也准备用jQuery+XML来实现,后来真的做出来了,非常的简单,将gpx文件改成xml,然后给jQuery读取。但最终我却又舍弃了这个方法,虽然GAE确实完全支持静态文件,主要是觉得静态文件也有不方便的地方,甚至在操作上也不方便。最后最后,就决定用GAE的datastore了,至少这个datastore是我可以登录后台进行管理的,可以添加、删除、更新等,而如果将静态文件传到GAE,那么只有覆盖的份,删除是不行的。考虑到最终的便捷性所以地图就准备Gmap API+Datastore的方式了。
写到这里基本上明白我的思路了吧,开发基本上用python+Datastore+Google Maps API+Picasa Web Album Data API,最后存放到Google App Engine上。由于只有三个界面,所以截了三个图来看一下吧,具体可以通过我的地址访问:http://photo.sharesh.cn 或者http://shareshcn.appspot.com 。下一篇凌乱的appengine/PicasaWeb API/Gmap API技术要点总结,做一些技术要点的说明。如果有时间完善一下的话,准备做一个基于GAE的开源程序,是地图+相册的形式,但整体思路暂时还没有考虑好。
首页的地图(本来两个marker的,但用theworld保存成png的时候就变成两个黑块了):
相册列表页面:
照片列表页面:
最后说一下GFW的事情,早在3月4日的时候疯掉了ghs.google.com的最后一个IP,后来在9号样子恢复了一个IP,而在昨天14号下午所有的appspot.com无法访问,至少我下午无法登录,但通过代理可以,这么早就不幸被Step1言中,但是昨天通过A记录的自己的域名倒是可以访问的,GFW真是辗转反侧,不服不行啊,真要把人给弄疯掉的。另外,今天appspot.com终于又可以访问了,够疯。
RoverTang@罗孚传说
E-mail:65985498[at]qq.com
微博/微信:rovertang