gpt4 book ai didi

perl - 如何使用 mod_perl 正确减少冗余请求的数量?

转载 作者:行者123 更新时间:2023-12-04 16:02:43 25 4
gpt4 key购买 nike

在一个相当大的遗留项目中,我将几个毛茸茸的模块重构为 Moose 类。这些模块中的每一个都需要数据库访问(惰性)获取其属性。由于这些对象被大量使用,我想减少冗余请求的数量,例如对于未更改的数据。

现在,我该如何正确地做到这一点?我有几种选择:

  • 通过一个角色在我的 Moose 类中实现缓存,以将它们存储在 memcached 中到期 5-10 分钟(可能不太难,但对于惰性属性很棘手)更新 : KiokuDB 在这里可能会有所帮助,必须阅读属性
  • 迁移到 DBIx::Class (无论如何都需要完成)并在此级别上实现缓存(DBIC 可能会自行消除大部分痛苦)
  • 不知何故让我的对象在 mod_perl 进程中持续存在(不知道如何做到这一点:()

  • 你将如何做到这一点,你认为什么是理智的方式?在对象或 ORM 级别上优先缓存数据吗?

    最佳答案

    对#3 的简短回答是:不要使用“我的”。您可能会执行以下操作:

     use vars qw($object);
    # OR post perl5.6:
    # our ($object);

    # create your object if it doesn't already exist
    $object ||= create_object;

    # Maybe reload some attributes if they have expired.
    $object->check_expires;

    在您的处理程序中像这样创建的对象只会在每个 Apache 子项内部共享,如果您每 5-10 分钟重新加载一次数据,这很好。任何只读的模块和对象都应该加载到 PerlPostConfigRequire 脚本中,以便在所有子项之间共享它们。

    关于perl - 如何使用 mod_perl 正确减少冗余请求的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2402131/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com