`
eimhee
  • 浏览: 2153015 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

drupal entitycache 性能问题

阅读更多

Entity cache 能提高性能, 把drupal 的entity 缓存起来, 但是不能跟memcache 和redis 一起用, 不然一删除一个node, 就会清空所有的缓存

 

Entity cache puts core entities into Drupal's cache API.

Due to the entity loading changes in Drupal 7, no core patches are required.

Don't bother using this module if you're not also going to usehttp://drupal.org/project/memcache or http://drupal.org/project/redis - the purpose of entitycache is to allow queries to be offloaded from the database onto alternative storage. There are minimal, if any, gains from using it with the default database cache.

 

代码如下

 

/**
 * Deletes multiple nodes.
 *
 * @param $nids
 *   An array of node IDs.
 */
function node_delete_multiple($nids) {
  $transaction = db_transaction();
  if (!empty($nids)) {
    $nodes = node_load_multiple($nids, array());

    try {
      foreach ($nodes as $nid => $node) {
        // Call the node-specific callback (if any):
        node_invoke($node, 'delete');
        module_invoke_all('node_delete', $node);
        module_invoke_all('entity_delete', $node, 'node');
        field_attach_delete('node', $node);

        // Remove this node from the search index if needed.
        // This code is implemented in node module rather than in search module,
        // because node module is implementing search module's API, not the other
        // way around.
        if (module_exists('search')) {
          search_reindex($nid, 'node');
        }
      }

      // Delete after calling hooks so that they can query node tables as needed.
      db_delete('node')
        ->condition('nid', $nids, 'IN')
        ->execute();
      db_delete('node_revision')
        ->condition('nid', $nids, 'IN')
        ->execute();
      db_delete('history')
        ->condition('nid', $nids, 'IN')
        ->execute();
      db_delete('node_access')
       ->condition('nid', $nids, 'IN')
       ->execute();
    }
    catch (Exception $e) {
      $transaction->rollback();
      watchdog_exception('node', $e);
      throw $e;
    }

    // Clear the page and block and node_load_multiple caches.
    entity_get_controller('node')->resetCache();
  }
}

 

class EntityCacheControllerHelper extends DrupalDefaultEntityController {

  public static function resetEntityCache($controller, array $ids = NULL) {
    // Reset the persistent cache.
    if (!empty($ids)) {
      cache_clear_all($ids, 'cache_entity_' . $controller->entityType);
    }
    else {
      // Force all cached entries to be deleted.
      cache_clear_all('*', 'cache_entity_' . $controller->entityType, TRUE);
    }

    // Give modules the chance to act on any entity.
    foreach (module_implements('entitycache_reset') as $module) {
      $function = $module . '_entitycache_reset';
      $function($ids, $controller->entityType);
    }
    // Give modules the chance to act on a specific entity type.
    foreach (module_implements('entitycache_' . $controller->entityType . '_reset') as $module) {
      $function = $module . '_entitycache_' . $controller->entityType . '_reset';
      $function($ids);
    }
  }

 

 

entity_get_controller('node')->resetCache();
会清空所有cache


0
0
分享到:
评论

相关推荐

    Drupal 6 Performance Tips

    《Drupal 6 性能优化技巧》一书深入探讨了如何通过最佳实践和技术工具来最大化和优化Drupal框架的性能,特别针对Drupal 6版本。本书由Trevor James和TJ Holowaychuk共同撰写,由Packt Publishing于2010年出版。 ###...

    drupal-9.0.1_drupal9_drupal9教程_drupal9开发实例_

    Drupal 9.0.1是Drupal内容管理系统的一个重要版本,带来了许多新特性和改进,旨在提升网站构建者的体验和网站的性能。Drupal是一款开源的PHP框架,被广泛用于创建复杂、可扩展的Web应用程序和网站。这个9.0.1版本的...

    Drupal7宝典+Drupal开发指南+Using Drupal

    这本书全面覆盖了Drupal7的基础知识,包括安装与配置、模块开发、主题设计、网站性能优化等。它将帮助你了解Drupal7的核心概念,如节点、用户、角色和权限,以及如何使用内置的功能来搭建网站。你将学习如何使用 ...

    Drupal data Drupal data

    4. **数据库优化**:Drupal支持缓存机制,可以缓存经常访问的数据库查询结果,提高性能。同时,定期进行数据库清理和优化也是必要的,比如清理冗余数据,重建索引等。 5. **Smart**:这个词可能指的是智能数据处理...

    drupal-7.23安装包

    10. **性能优化**:Drupal 7.23 可以通过缓存、页面压缩、数据库查询优化等方式提高性能。还可以使用像 Varnish 或 Memcached 这样的外部缓存解决方案,以及 Drupal 模块如 Boost 或 Page Cache 来进一步加速网站。 ...

    drupal高级开发手册

    - **性能优化**:提供一系列针对提高Drupal网站性能的策略,如缓存设置、图片压缩、JavaScript/CSS合并等。 - **安全性考量**:讨论常见的安全威胁及防护措施,涵盖密码保护、输入验证、SQL注入防御等方面。 - **...

    drupal性能建议

    然而,像所有系统一样,Drupal 也有其性能优化的考量点。针对提供的文件内容,我们可以提炼出以下关于 Drupal 性能建议的关键知识点: 1. **Blob 字段的影响**: Blob 字段用于存储大对象,如图片或文件,当内容较...

    drupal7与drupal6版本修改内容

    3. **PHP 最小版本要求提升**:Drupal 7 要求 PHP 5.2 作为最低版本要求,相比 Drupal 6 的 PHP 5.0,这是一个显著的进步,这意味着 Drupal 7 能够利用 PHP 5.2 中的新特性来提升性能和安全性。 #### 配置层面的...

    drupal的一套相关学习资料.rar

    - **性能优化**:学习缓存机制、数据库优化、CDN 使用等,提升 Drupal 网站性能。 - **安全性**:理解 Drupal 的安全最佳实践,学习如何保护网站免受攻击。 6. **实战项目**: 通过搭建实际项目来应用所学知识,...

    drupal6版本(这是drupal6)

    4. **日志查看**:查看Drupal的日志信息,便于诊断问题。 总的来说,Drupal 6是一个功能强大的CMS,适合各种规模和复杂度的网站开发。通过学习和掌握其安装及核心特性,开发者可以利用Drupal 6构建出功能丰富的网站...

    drupal 7 中文版

    这个版本,7.38,是Drupal 7系列的一个稳定更新,旨在增强用户体验,提高系统性能,并修复已知的安全问题。 Drupal 7 是 Drupal 的一个里程碑版本,于2011年发布,引入了许多新功能和改进。以下是一些关于Drupal 7...

    Drupal安装与升级教程

    在实践中,你可能还会遇到更多关于Drupal的主题定制、模块开发、性能优化等方面的问题,持续学习和探索是提升Drupal技能的关键。同时,Drupal社区提供了丰富的资源和热情的用户,可以帮助你在使用过程中解决各种问题...

    drupal7安装说明

    Drupal 7 是一个流行的开源内容管理系统,用于构建各种类型的网站。本教程将详细介绍如何在本地环境中安装 Drupal 7,特别是针对使用 Apache2、PHP5 和 MySQL5 的集成环境,如 AppServ。 首先,确保你已经安装了...

    drupal-5.23.zip

    5. **性能优化**: 了解如何优化Drupal的性能,如缓存设置、数据库查询优化等,对于大型或高流量的网站尤其重要。 Drupal 5.23作为一款轻量级的框架,不仅适合初学者快速上手,也能够满足专业开发者的复杂需求。...

Global site tag (gtag.js) - Google Analytics