首页 > 解决方案 > 系统/缓存文件夹 codeigniter 中的缓存文件过多

问题描述

我有一个CodeIgniter使用youtube API开发的音乐网站,没有数据库。最近我注意到文件夹中生成了太多system/cache文件。
如何停止生成此缓存文件?请注意,我没有使用任何缓存方法。

标签: phpcodeignitercaching

解决方案


system/cache 最初不是默认的 codeigniter 缓存目录。我不会将缓存存储在那里,作为它的框架主文件夹。默认为应用程序/缓存。

默认情况下,CI 不会缓存任何内容。因此,您的应用程序是使用缓存构建的。你告诉你不使用数据库,所以我假设它不是数据库缓存。

检查您的应用程序是否有类似“$this->load->driver('cache'”的内容。可以加载缓存而不需要额外的参数,如 $this->load->driver('cache'); 或使用 $this 等参数->load->driver('cache',array('adapther'=>'xxx'));

https://www.codeigniter.com/userguide3/libraries/caching.html

现在,在你的应用程序中搜索 $this->cache->save 或 $this->cache->file->save 如果你找到了,这意味着你正在使用 CI 缓存。

问题是,您不能仅仅删除缓存加载,因为应用程序会启动缓存对象,并且您的应用程序将失败,除非您重写所有使用缓存的地方。

现在,您有几个选择:

1.只需通过cron定期使用一些脚本清理缓存目录。

  1. 您可以将缓存文件夹权限更改为不可写,这将在您的日志中生成警告,因此应禁用日志记录。恕我直言,这不是正确的方法,因为可能会导致致命错误/空白页,但这只是可能的解决方案之一。如果使用文件缓存,这应该不会导致问题,而在其他情况下可能会出现问题。

  2. 您可以扩展缓存库,并简单地创建空缓存 SAVE 函数。在这种情况下,您的文件将不会被保存。

  3. 如果您的服务器上有它,您可以缓存到 memcached。好吧,如果你的缓存写成 $this->cache->file->{operation},那么你需要将所有这些更新为 $this->cache->memcached->{operation}。如果缓存写成 $this->cache->{operation},你可以调整配置,比如

$this->load->driver('cache',array('adapther'=>'memcached'));

并在配置文件中设置 memcached 服务器信息。(配置/memcached.php)

您告诉过您没有使用任何缓存方法。所以你不应该找到我上面放的任何代码。

我能想到的最后一件事是

$this->output->cache(xxx); 其中 xxx 是以分钟为单位的缓存时间。它强制缓存整个生成的页面;如果你发现这样的行,你可以尝试将它们注释掉,看看会发生什么

https://www.codeigniter.com/user_guide/general/caching.html

有一个很好的说明:如果您更改可能影响输出的配置选项,您必须手动删除缓存文件。

如果上面的示例中绝对没有找到,您可能会使用一些自定义 make 缓存。

祝你好运!


推荐阅读