php - 系统/缓存文件夹 codeigniter 中的缓存文件过多
问题描述
我有一个CodeIgniter
使用youtube API开发的音乐网站,没有数据库。最近我注意到文件夹中生成了太多system/cache
文件。
如何停止生成此缓存文件?请注意,我没有使用任何缓存方法。
解决方案
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定期使用一些脚本清理缓存目录。
您可以将缓存文件夹权限更改为不可写,这将在您的日志中生成警告,因此应禁用日志记录。恕我直言,这不是正确的方法,因为可能会导致致命错误/空白页,但这只是可能的解决方案之一。如果使用文件缓存,这应该不会导致问题,而在其他情况下可能会出现问题。
您可以扩展缓存库,并简单地创建空缓存 SAVE 函数。在这种情况下,您的文件将不会被保存。
如果您的服务器上有它,您可以缓存到 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 缓存。
祝你好运!
推荐阅读
- java - 聚合根类是否仅包含公开公开的方法
- python - Python:使用 CSV 文件中的列值创建饼图
- javascript - COM 事件处理适用于 VBScript 但不适用于 Javascript (JScript)
- java - 为什么我的自定义 Swing 组件在我移动鼠标时重绘速度更快?(爪哇)
- reactjs - 在 ReactJS 中从状态中删除项目时出错
- javascript - 在 30 天的周期中使用了多少天与未使用天数(问题:没有正确加起来)
- angularjs - 无法读取未定义 Angular 的属性“长度”
- embedded-linux - 如何设置 bootargs 以通过 eth0 在 beaglebone 中加载 nfs
- qt - QML 网格手动指定位置
- python - 为什么这个 powerset 生成器需要按位运算符?