web服务器最优化
让Drupal发出过期的HTTP头部,在用户的浏览器中对静态文件缓存两周,或者直到存在一个文件的新版本为止。这是用于所有的图片,CSS和JavaScript文件,和其它静态文件。最终的结果是减少带宽,而服务器需要发送的信息将会更少一些。Drupal对于和mod_expires一同工作预先进行了配置,一旦mod_expires可用,Drupal就会使用它。mod_expires的设置可以在Drupal的.htaccess文件中找到。 # Requires mod_expires to be enabled. # Enable expirations. ExpiresActive On # Cache all files for 2 weeks after access (A). ExpiresDefault A1209600 # Do not cache dynamically generated pages. ExpiresByType text/html A1 我们不能让mod_expires缓存HTML内容,这是由于Drupal输出的HTML内容不总是静态的。这也是Drupal拥有自己的内部缓存系统的原因,内置缓存系统可对它的HTML输出进行缓存(比如,页面缓存)。
启用MySQL的查询语句缓存
MySQL 是Drupal最常用的数据库。它具有在内存中缓存常用查询语句的能力,这样一个给定的查询语句再次被调用时,MySQL将立即从缓存中将其返回。然而,在大多数MySQL中,这一特性默认是被禁用的。为了启用它,向你的MySQL配置选项文件添加下列代码;该文件的名称为my.cnf,它用来声明变量和你的MySQL服务器的行为(参看http://dev.mysql.com/doc/refman/5.1/en/option-files.html)。在这里,我们将查询语句缓存设为64MB:
# The MySQL server
[mysqld]
query_cache_size=64M
页面缓存
有时,一些简单的事情会被忽略掉,这也是为什么需要再提一次它们的原因。Drupal 拥有各种内置的方式,它能够通过为匿名用户存储和发送压缩了的缓存页面,来减少数据库的负重。通过启用这一缓存,你可以使用一个单独的数据库查询来高效的读取页面,而不是使用许多查询来获取页面(在没有缓存可用时就使用这种方式)。Drupal的缓存默认是禁用的,它可以在Administer ➤ Site configuration ➤ Performance中配置。更多信息参看第15章。
带宽最优化
这是Administer ➤ Site configuration ➤ Performance 页面中的另一个性能优化措施,它能够减少发送给服务器的请求次数。通过启用“Aggregate and compress CSS files”(“聚合和压缩CSS文件”)特性,Drupal将处理由modules创建的CSS文件,压缩它们,并将它们合并成一个文件。这将减少每个页面的HTTP请求数量,以及下载页面的整体大小。
设置采样频率
为了决定站点的负载量,从而决定是打开还是关闭节流机制,节流阀模块必须查询数据库。这位数据库服务器增加了额外的负担。使用“Auto-throttle probability limiter”来设置检查的频率(实际中有可能检查发生在一个给定请求上)。例如,选择20%,那么对于每5个请求就会采样一次。
// Get throttle status.
// We use module_invoke() instead of calling throttle_status() directly
// so this will still work when throttle.module is disabled.
$throttle = module_invoke('throttle', 'status');
if (!$throttle) {
// Throttle is off.
// Do nonessential CPU-intensive task here.
}