当前位置: 首页 > 知识库问答 >
问题:

在Drupal 6中,使用菜单钩子时如何避免清除缓存?

陈实
2023-03-14

我使用Drupal 6.26。当我更新我的页面参数(例如从150到50)时,我刷新页面,没有看到任何变化。只有当我从性能页清除缓存时,我才会看到更改。当我在Windows上本地测试Drupal时,缓存的设置都被关闭了。现在我知道在Drupal 5上你有布尔标志,它是$may_cache,但是看看API,这个选项对于Drupal 6不存在。

是否有一种方法可以避免每次看到更改时都清除缓存?

function usman_menu(){

$items['usman/hello'] = array(
        'page callback' => 'usman_example',
        'access callback' =>'user_access',
        'access arguments' =>array('access content')
);

$items['usman'] = array(
        'page callback' => 'usman_begin',
        'page arguments' => array('150'), 
        'access callback' =>'user_access',
        'access arguments' =>array('access content')
);
return $items;
}

function usman_begin($id = 20, $message = "YES", $optional = "NO"){

print "Loaded " . __FUNCTION__;
print "<br/>";
print "ID is $id, Message is $message, Option is $optional";
}

好的,我现在已经了解了一些关于菜单挂钩的知识。我只是在玩代码,看看路径如何与参数和占位符一起工作。它刷新速度很快,足以让我进行测试,我不得不求助于清除缓存。我觉得这很奇怪,考虑到没有任何选项可以通过性能页面临时禁用这种缓存,只针对开发人员。

谢谢

共有2个答案

顾俊誉
2023-03-14

如果我正确理解你的问题,我的答案是不。

我假设您正在更改“页面参数”中的参数值=

我能提供的唯一建议是:

  • 对于快速脏测试,重写函数(回调)本身中变量的值
  • 每次重置时,使用模块/脚本清除缓存表。e、 g.drush cc all,或使用devel
淳于煌
2023-03-14

我不知道有什么方法可以在不改变核心文件的情况下做到这一点(这显然不是一个好主意)。

菜单项是缓存的,在调用Menu\u rebuild()之前不会刷新,而在刷新缓存(或调用其他几个管理任务之一)之前不会刷新。

无论采用哪种方式,都必须至少清除cache_menu表,否则就不会调用hook_menu()

 类似资料:
  • 我的web项目一旦有前端页面的更新就需要清理浏览器缓存后才能看到最新效果,有时不清理不但不能看到最新效果还会出现页面布局错乱,如何能避免这种情况,我想要更新前端页面,用户也不需要清理浏览器缓存,页面关闭重新打开就能显示最新效果

  • 问题内容: 我正在使用Ajax根据某些ID从服务器检索数据,以执行自动建议功能。但是,当我提交表单并更新数据库时,“自动建议”字段应该不再包含此ID的任何内容,但仍会从其缓存中检索数据。有谁知道如何清除缓存并在每次按下按钮时发出Ajax发送请求以从服务器获取最新数据?请帮助我整个星期都坚持不下去,找不到解决方案。 例如:当ID字段为00001时,自动建议字段将为1,2,3。在我提交表单并更新数据库

  • 我正在使用Guava缓存热数据。当缓存中不存在数据时,我必须从数据库中获取数据: 我的问题是当数据不存在于数据库中时,我希望它返回并且不做任何缓存。但Guava保存与缓存中的关键字,并抛出一个异常,当我得到它: com.google.common.cache.CacheLoader$InvalidCacheLoadExcION: CacheLoader为shisoft键返回null。 我们如何避免

  • 我已在登录时在本地存储中设置了身份验证令牌,并在注销时将其清除。注销后,如果用户尝试再次登录,则从缓存中获取旧的身份验证令牌,而不是新设置的值。如何在清除本地存储时清除缓存。我在应用程序中使用angular 2。 登录: 注销:

  • 问题内容: 通过WSDL缓存所在的位置(),但我不一定知道删除以WSDL开头的所有文件是否安全。 是的,我 应该 能够从中删除所有内容,但是我不知道如果删除所有WSDL文件,这还会影响什么。 问题答案: 您可以安全地删除WSDL缓存文件。如果希望防止以后进行缓存,请使用: 或动态地:

  • 问题内容: 我有一个Twitter Bootstrap下拉菜单。正如所有Twitter Bootstrap用户所知,单击(甚至在其中单击)时,关闭菜单。 为避免这种情况,我可以轻松地在下拉菜单上附加一个click事件处理程序,只需添加著名的即可。 但是,这看起来很简单,而且是非常普遍的行为,而且由于(以及)事件处理程序都委派给了对象,因此这些元素(上 一个/下一个 控件,…)上的事件将被“忽略”。