Drupal系统A/B Test解决方案

归类于Drupal 2 条评论

引言

本文是我在工作中遇到A/B Test的需求,经过几天的研究的一篇心得笔记,不一定多专业,希望能给有类似需求的同行一些参考和灵感,在学习的过程中,也发现一些比较优秀的国外博文,我打算在近期翻译几篇,而不是把只言片语融入到本文当中,本文的重点仍然是Drupal A/B Test的解决方案,介绍性的文字来源于最近几天的学习心得,是给不熟悉A/B Test的同行的一些入门介绍。

Continue reading “Drupal系统A/B Test解决方案” »

2,192 Views , , ,

网站性能优化及Drupal性能优化拾遗

归类于Drupal 参与评论

阅读了一下Drupal专业开发指南一本书,英文版的,里面有几点关于Drupal以及网站优化的建议,总结了一下,列在此处以供参考。

  1. 使用Varnish作为前段代理。(一直推荐,从不间断!)
    也可以使用Boost+Varnish,两个并不冲突。如果内存足够多,可以把Boost的的缓存目录挂载在内存上,这样速度更快。
  2. 不要使用Drupal默认的404,因为走Drupal,比较慢,消耗系统资源。
    给htaccess或者apache的conf文件添加如下代码:

    <filesmatch "\.(png|gif|jpe?g|s?html?|css|js|cgi|ico|swf|flv|dll)$">
      ErrorDocument 404 default
    </filesmatch>
  3. 定时清理Session表。
    Drupal的session保存在数据库里面,设置不当会导致大量的垃圾数据,因此需要设置session时间短一点。添加如下代码到settings.php里面

    ini_set('session.gc_maxlifetime',   86400); // 24 hours (in seconds)
    ini_set('session.cache_expire',     1440); // 24 hours (in minutes)
  4. Continue reading “网站性能优化及Drupal性能优化拾遗” »

1,213 Views , , ,

Drupal实用本地调试函数

归类于Drupal 参与评论

在Drupal开发中,调试是必不可少的,可以帮助我们找到bug,或者性能优化、或者改善用户体验等等。而关于调试的话题,本站已经有过几篇文章专门论述了,大家可以参考如下几篇:

Drupal调试之Devel模块使用技巧
Drupal/PHP性能分析工具之xDebug

本文的重点不是向大家推荐其他需要安装的工具,而是一段我认为非常有用的调试代码,有了这段代码,可以很清晰的了解一些debug信息。
Continue reading “Drupal实用本地调试函数” »

948 Views , , ,

Drupal数据库备份以及MySQL备份策略

归类于Drupal | 数据库技术 4 条评论

数据备份是非常重要的事情,一个站点如果没有及时备份数据,那么一旦服务器出现故障,造成的后果将是不可想象的。因此,作为生产站点,一定要及时的备份,以免出现不可挽回的损失。 笔者在这里共享一下Drupal小型站点的备份策略和大型站点MySQL的备份策略。

中小站点简单备份策略

基于Drupal的中小行网站,我们可以使用backup_migrate模块,该模块提供了定期备份的功能,备份的时间、保留多少个备份等等设置,设置好之后,定期执行cron即可备份成功。 一般的Drupal小站,我们只需使用svn即可,在服务器端,我们把备份好的数据提交到svn,就可以达到备份的目的。由于Drupal的备份模块可以设置备份保留的文件份数,因此不会造成太多的备份文件,从而导致svn很大。

下面是一个简单的备份脚本,放置到站点根目录,然后加到crontab每天执行即可。
Continue reading “Drupal数据库备份以及MySQL备份策略” »

1,561 Views ,

Varnish前端代理Drupal的配置以及Jenkins

归类于Drupal | 服务器技术 2 条评论

鉴于Varnish使用以及教程都较少,所以特将Varnish作为Drupal的前端代理配置贴出来,供大家参考使用。顺便设置了Jenkins的代理转发,如果要启动Jenkins,请注意端口号。

Apache/Nginx只需监听127.0.0.1的80端口即可,Varnish监听公网IP的80端口,负责转发请求。
文件中附带了Round-Robin负载均衡的设置,如果有多个服务器,可以参考之,文件默认位置:/etc/varnish/default.vcl。

Continue reading “Varnish前端代理Drupal的配置以及Jenkins” »

2,825 Views , ,

Apache Solr 快速启动包以及中文分词集成

归类于Drupal | 数据库技术 | 服务器技术 2 条评论

Solr一键启动包,Apache Solr中文支持包。

ApacheSolr 作为一款全文搜索引擎大家都很了解,不过说到中文的支持,(4.0版本之前),总是不能让人满意。首先,我们感谢一下IKAnalyzer的作者,开发了Lucene的中文分词包。
Continue reading “Apache Solr 快速启动包以及中文分词集成” »

4,190 Views , , , ,

PHP和Drupal性能优化系列之(二)

归类于Drupal | 服务器技术 4 条评论

继Drupal北京聚会之Drupal性能优化分享之后,笔者有幸做了Drupal性能优化系列之(二),分享了有关Drupal以及PHP还有Varnish、Apache的性能优化经验,现将文档分享,供大家参阅下载。
Continue reading “PHP和Drupal性能优化系列之(二)” »

1,704 Views , ,

PHP后台进程/异步处理的用法及在Drupal中的应用

归类于Drupal 参与评论

在Web的HTTP请求中,经常有些消耗CPU耗时的操作,并且这些操作并不是立刻就需要得到执行结果,这时候,我们最好使用异步的后台进程处理来提高网站的性能。在异步处理框架中,Gearman是一款优秀的异步处理程序并且支持多种语言和平台,但正是由于这种兼容性的,所以使用起来稍微复杂,所以本文暂不介绍Gearman的使用。

PHP在Linux上运行,可以通过一些函数调用系统shell,让shell在后台运行,这样就可以打开一个后台进程然后立即返回,这种方法可以把一些耗时的操作独立出来,进而提升网页的响应时间,提升用户的体验。

笔者基于Drupal,在其上写了几个后台进程的API,经测试运行完美,极大得提高了一个耗时的页面操作,代码参阅如下:

Continue reading “PHP后台进程/异步处理的用法及在Drupal中的应用” »

1,464 Views , , ,

通过Hack来提高Boost模块的性能

归类于Drupal 一条评论

Boost模块,Drupal高性能网站中的必备利器,前文《Drupal性能优化之-将Boost模块用到极致》详细讲解了几处对Boost模块的优化。但是近期笔者通过对一个大型Drupal网站的性能跟踪,发现Boost模块本身会有性能问题,本文就几点Boost的使用经验做个总结。

1. 防止Boost清除缓存
Boost模块实现了hook_nodeapi,在node每次更新、保存等操作的时候,Boost都会清除cache。Boost清除内存是一个极其费时的操作,在许多场合下,我们不需要清除缓存的操作,比如content_profile的操作。
Continue reading “通过Hack来提高Boost模块的性能” »

762 Views , ,

Drupal自定义内容类型与nodeAPI的研究

归类于Drupal 一条评论

自定义内容类型和CCK,是Drupal得以扩展的核心基础,几乎所有的Drupal站点,都有自己自定的内容类型(content_type),也几乎都在使用CCK来添加自定义字段。既是核心,那么一些小调整可能会对Drupal整个站点的性能都会带来很大的影响,本文主要就创建Drupal的自定义内容类型中遇到的一些问题和解决方案,做一些经验介绍。

创建自定义内容类型的方法

1. 通过Drupal内置的内容类型管理界面创建。
通过Drupal的管理页面: Administer -> Content management -> Content types,点击 “Add content type” 来创建自定义内容类型。然后是一些设置选项,填完之后点击确定就成功创建了Drupal的一个内容类型。

2. 通过Drupal的Hook,hook_node_info等一系列Hook通过代码创建自定义内容类型。
Drupal提供了创建自定义类型的hook_node_info以及其他相关的一系列hook,如hook_form、hook_perm、hook_access、hook_update、hook_insert等相关hook。其中主要的是hook_node_info和hook_form,实现这两个基本就可以。

两个方法的优劣
Continue reading “Drupal自定义内容类型与nodeAPI的研究” »

2,164 Views , , , , ,

顶部