月度归档:2012年06月

django的js/css压缩组件Django Compressor

为了加快网站的加载速度,我们通常要多js和css进行压缩处理。这些js和css的压缩工作如果都手动处理,费时费力。
Django Compressor 可以实现js/css的自动压缩。Django Compressor在易用性方面做的非常好,按照 文档 做简单的设置后就可以正常工作。强烈建议大家去将文档完整的看一遍(文档很短)。
使用的时候,只需要将css/js放到 compress 标签中 Django Compressor 即可自动进行处理。在debug模式时, Django Compressor 不会对做任何处理。在非debug模式时,Django Compressor会自动对js/css进行压缩,并将压缩后的问题输出到django的 STATIC_ROOT 目录。所以请务必保证 STATIC_ROOT 目录进行了正确的设置。

{% load compress %}
{% compress  [ [block_name]] %}

{% endcompress %}
{% compress css %}

{% endcompress %}

coffeescript、less 支持

在开发阶段coffeescript和less可以直接使用js来处理,在正式发布时处于加载速度的考虑需要预先编译成js和css。 Django Compressor 提供 COMPRESS_PRECOMPILERS 设置,根据type类型进行预处理。

COMPRESS_PRECOMPILERS = (
    ('text/coffeescript', 'coffee --compile --stdio'),
    ('text/less', 'lessc {infile} {outfile}'),
    ('text/x-sass', 'sass {infile} {outfile}'),
    ('text/x-scss', 'sass --scss {infile} {outfile}'),
)

“似水流年”近期情况

推广情况

网站在6月1日上线,并在上线后创建了一个乔布斯的时间线作为网站使用演示。网站上线后将乔布斯的时间线分享到新浪微薄。在博客上写博客公布网站。python.cn网站将“似水流年”作为django项目进行推荐。由于我的博客以及微薄的关注人数并不多,宣传效果一般。python.cn为网站带来的流量相对来说还不错。

网站现状分析

让人比较尴尬的一点是用户创建时间线的积极性并不是太高。即使只是简单创建,并未添加内容的时间线也没几个。我想这应当和网站的访客类型有这不小的关系。我的博客与python.cn的访客都以技术人员为主,这在一定程度上和“似水流年”的目标用户是不匹配的。就我个人对网站的预期定位以粉丝群体与历史爱好者为主。创建和管理好一个时间线是非常花精力的一件事,如果缺乏一定的热情是很难坚持做下去是。对偶像的热爱可以很好的支撑时间线的维护热情。对历史爱好者而言,时间线良好的视觉效果对历史事件的整理有着先天的优势。
就我的实际使用而言,尽管我花了不少的精力在时间线的编辑功能上,但时间线的创建成本还是太高。为创建一个时间线你需要花费不少的时间收集相关的资料,除此之外资料的录入也并不省心。要想降低时间线的创建成本似乎只能用些自动方法抓取内容生成时间线,但我并不太想这么做。过多自动生成的内容会降低网站内容的质量。一个内容质量过低的网站只是单纯的增加网络上的信息噪声而已。

近期开发计划

  • 社会化分享按钮(已添加)
    • 微博有着超强的信息传播能力。虽然不确定是否真会有人使用分享功能,但感觉加上还是有些必要。
  • SEO的相关优化
    • 时间线的加载基于AJAX实现,这将导致搜索引擎无法正确抓取时间线信息。出于SEO的考虑,网站讲增加文字版的timeline查看页面。
  • 协作编辑功能
    • 一人编辑过于辛苦,如果是团队维护则要轻松不少。感觉类似功能对粉丝团体将比较有用。
  • 自动生成微博的时间线
    • 输入微博用户名,自动抓取微博数据生成时间线。作为网站的一个工具应用出现,相关数据不混入网站首页。

时间线网站“似水流年”上线

网站地址: http://jstwind.com
在很早前就想做这么一个关于时间线的网站了,并在今天年初开始真正开始行动。中途因为各种原因将这件事情给搁置了,直到最近才重新启动。目前还只是完成了基础功能,细节方面也未能调教到自己满意的程度。不过不管怎么说,网站总算是基本可用了。欢迎大家上去看看,去制作自己感兴趣的时间线。
目前网站上只有一个关于 乔布斯 的时间线。事件的编辑比我预想的还要花时间,这也让我更希望能早些加入时间线的协作编辑功能。
这是我在继 LBForum 之后真正有在用心做的一个私人项目。项目后台代码方面的工作量倒还好,主要的工作都花在了前端上。事件的编辑是一项非常繁琐的工作,因此花费了不少时间来使用AJAX来提高事件编辑的易用性。项目代码托管在 github 上。项目地址在以前的博客里发布过,如果你感兴趣的话可以去找找。
最后把用到的主要技术和服务列一下,接下来一段时间可能会将其中用到一些技术写成博客:

  • 网站部署在 webfaction ,采用apache+mod_wsgi的方式进行部署。
  • 由于webfaction在国内的访问速度并不理想,静态资源托管在sina的 SAE 平台上。因为申请了SAE的开发者认证,每月有1.5w的免费云豆资源,闲着也是闲着。
  • 域名在 godaddy 购得。在使用优惠码后,一年的费用不足$2。
  • 域名的DNS解析用的是 DNSPod 。 DNSPod在易用性方面确实做的很不错。
  • 使用 腾讯企业邮箱 。 或许很多人对腾讯比较反感,但腾讯的产品确实都还做的不错。使用腾讯企业邮箱的重要原因之一是免费。
  • 服务端的开发技术依旧用的是 Django 。使用自己熟悉的技术可以大大的加快开发进度。
  • 前端用的是 twitter-bootstrap 。bootstrap目前已经有烂大街的趋势了,不过这东西确实好用。为减少bootstrap的痕迹,下一步考虑给jstwind换个配色方案。
  • JS的基础库用 JQuery 。现在JQuery基本上已经是JS标准的一部分了。
  • 时间线的JS控件用的是 Timeline JS 。虽然这个JS组件还有不少让我不太满意的地方,但这个组件胜在漂亮,而且作者非常勤奋,github上提的issue基本上在一天内就会有回复。
  • 文件上传用的是 jQuery-File-Upload 。纯JS实现,不依赖Flash即可实现文件的批量上传。缺点是如果客户用的浏览器版本太老就无法使用批量上传功能了。
  • Django的第三方APP方面用的就比较多了,其中包括 django-userena、django-taggit等,以及部分我自己写的与修改的APP。第三方APP的详细列表可以查看项目中的 requirements.txt 文件