跳转到主要内容
lcnphp 提交于 16 July 2012

本章作者 Ryan Szrama

随着drupal7的commerce模块的推出,drupal的电子商务功能变得更加强大了。Drupal commerce项目是由一组commerce核心模块组成的,并且利用了很多drupal7的新的改进和特性。这章将从对drupal commerce的一个广阔概述开始,在强调其关键的特性之后,才能继续进行详细的考察核心系统,它们的实现,它们如何一起使用。它还包括了针对建站者和开发者的一些建议,使他们能够在自己的网站上更好的实现drupal commerce的功能。这一章将以一些话题讨论结束,其中包括项目的发展历史、设计理念以及如何利用好drupal7的新特性。

Dan 提交于 13 July 2012

至此,你已经看到了一些可插拔子系统是如何配置的,你还简要地回顾了各种不同的提供快速匿名页面服务的解决方案。仅通过采用上述解决方案,你就可以使你的站点在性能方面(感谢memcached)和对匿名访客规模化方面(感谢Varnish)有良好的表现。然而,如今是社会化网站的天下,它们需要的是服务已登录用户。问题变得棘手起来。虽然memcached确实为你赢得一些性能,还是有很多问题需要克服。你需要退回一步,去了解网站是如何操作、存储和读取数据,所遭遇的问题,以及解决这些互相之间不太相关问题的全新解决方案。 从更高的层面看,多数网站都执行着相同的动作:收集数据(要么是用户或管理员通过浏览器表单输入的,要么是从另一个网站聚合来的),存储数据到数据库,然后再把数据显示给用户。显示和更改数据的操作通常称为创建(Create)、读取(Read)、更新(Update)和删除(Delete)四大操作,简称CRUD。一个典型的网站会使用某种SQL数据库,并在其上执行这些操作。

Dan 提交于 13 July 2012

规模化工具集的另一个重要部分是Varnish。Varnish是一个存储页面和提供页面服务的外部程序。普通页面缓存需要一个到达web服务器的请求,顺序是:引导Drupal、加载页面、然后由Drupal发送请求。Boost模块提供一个更快的解决方案,因为现在请求只需到达web服务器,而Drupal并未启动。Varnish则更快,因为它自己处理请求。在匿名页面服务方面,它确实提供了非常快并且大范围的规模化解决方案。它以“Varnish让网站飞起来”为座右铭,并一直为此而努力。Varnish应用程序地址在www.varnish-cache.org/,与Drupal的整合方案在drupal.org/project/varnish

Dan 提交于 13 July 2012

接下来的解决方案在共享主机上将无法工作,你需要控制你的主机环境以达到优秀的性能和扩放。 memcached是将缓存存储在内存中并允许通过网络访问的一个独立程序。做为一个独立程序没什么特别,Drupal使用的数据库(如MySQL)也是这样的应用程序。memcached的与众不同之处在于,它的数据仅存储在内存中,这使得它非常非常快。使用该程序来取代数据库缓存对于Drupal的性能大有裨益。并且不仅仅是Drupal——这是一个非常成熟的解决方案,在每个大型网站中都有实际应用。 注意memcached不仅仅是一个性能解决方案,同时也是易于进行良好扩放的:你只需根据需要,在任意多个服务器上,启动任意多个它的实例,并配置Drupal来使用它们。memcached无需任何设置,因为每个独立的memcached实例不需要彼此了解。与它们每个进行对话的是Drupal。这和MySQL非常不同,它的主从服务器模式(master-slave)需要作明确的配置。

Dan 提交于 13 July 2012

对于开发目的而言,我建议使用最简单的缓存实现:无。有一种缓存实现等同于黑洞:缓存写入和清除程序不做任何事情,读取则永远是失败的。Drupal在安装过程中就使用这种假缓存,因为还没有任何关于何处缓存存储的信息可用。这种假缓存在开发过程中也非常有用。需要提醒的是,多步骤(因此还有AJAX)表单,需要一个工作缓存,当所有缓存都用黑洞方式处理时,它们将无法工作。要用Drupal自身的假缓存来让缓存短路,在settings.php中加入下面三行,settings.php文件在你站点的/sites文件夹下,通常它会是(相对于你的Drupal安装根目录下的)/sites/default/settings.php: $conf['cache_backends'][] = 'includes/cache-install.inc'; $conf['cache_class_cache_form'] = 'DrupalDatabaseCache'; $conf['cache_default_class'] = 'DrupalFakeCache';

Dan 提交于 13 July 2012

缓存是指临时存储一些处理过的数据。它可以是结构化数据或是包含HTML格式化文本的字符串。用缓存数据来提供服务,比从多个数据表中读取和处理数据更快,但另一方面,缓存数据是不可编辑的,所以不可能把它处理成另外一种格式。因此,原始数据必须保留在数据库中。现在你有了多个数据副本,原始数据和缓存之间就有可能会失去同步。在这种情况下,缓存数据是“陈旧的”。有时这样没问题;如果你一天出产几篇文章,更新的内容在原本发布日期后的几分钟内不被匿名用户看到可能并没有多大关系。这是规模化方面的另外重要一课:理论服从实践。规模化永远是在寻求折衷方案,对于一个给定的网站,这只是哪种折衷更能接受的问题而已。

订阅