gpt4 book ai didi

laravel - Laravel 基于文件的缓存的大小限制是多少?

转载 作者:行者123 更新时间:2023-12-04 11:49:48 25 4
gpt4 key购买 nike

我是一名新开发人员,正在尝试实现 Laravel (5.1) 缓存设施以提高我的应用程序的速度。我开始缓存我的应用程序不断引用的大型数据库表 - 但它太大了所以我已经放弃了,现在我'永远'缓存较小的数据块 - 例如,对于每个页面,只有那个大的部分相关的数据库表。

我在 Laracasts 上看过“缓存要点”,做了一些谷歌搜索,并在这个论坛(和 Laracasts)中进行了搜索,但我仍然有几个问题:

  • 当您使用 Laravel 的基于文件的系统时,我并不完全清楚缓存大小限制是如何工作的 - 缓存是否有整体应用程序内大小限制,还是只有每个键和服务器大小限制大小?
  • 您应该从基于文件的缓存切换到 Memcached 或 Redis 之类的缓存有哪些迹象?使用其中一种服务有什么好处?是不是您的缓存是在不同的服务器上处理的(从而减轻您自己的负载)?当您的基于文件的本地缓存对于您的服务器来说太大时,您是否会切换到这些服务之一?

  • 我的应用程序使用了几个包含 3,000-4,000 行的表 - 这些表中的数据会不断被引用并且将保持静态,除非我决定添加新选项。我基本上是在寻找加速对这些表中数据的查询的最佳方法。

    谢谢!

    最佳答案

  • 我认为 Laravel 根本不会对其文件 i/o 施加任何限制 - 限制将在于 PHP 一次可以读取/写入文件的数量,或在任何时间保存在其内存/进程中的数量。
    它确实序列化您缓存的数据,并在您重新加载它时将其反序列化,因此您的 PHP 环境必须能够一次处理整个缓存文件(相当于顶级缓存键)。因此,如果您收到 cacheduser.firstname ,它必须加载整个 cacheduser文件中的 key ,将其反序列化,然后获取 firstname关键从那。
    如果您想继续走这条路,我会将 PHP 内存限制(经典,我知道!)作为调查的第一点。
  • Redis 或 memcached 等缓存服务是定制的、优化的缓存解决方案。它们从您的 PHP 环境中承担了一些逻辑和责任。
    例如,它们可以从项目中检索子键,而无需处理整个事物,因此可以以内存高效的方式检索某些缓存数据的一部分。因此,当您请求时 cacheduser.firstname从 redis 中,它只会返回 firstname属性。
    它们在标记/清除缓存子集方面还有其他优势(请参阅 [缓存标签 Laravel 文档] ( https://laravel.com/docs/5.4/cache#cache-tags ))
    另一件要考虑的事情是缩放。如果您的站点足够大,并且在多个服务器之间进行负载平衡,则这些服务器之间的文件系统缓存可能会有所不同,因为每个服务器只能检查其本地文件系统中的缓存文件。缓存服务可以在不同的服务器上(许多主机将有一个单独的 redis/memcached 服务可用),所以不是这个问题的受害者。
    另外 - 据我了解(这可能是最重要的事情),Laravel 中的文件缓存驱动程序主要用于本地开发和测试。虽然它可以很好地用于具有基本缓存需求的简单应用程序,但它不适用于大型可扩展生产环境。

  • 就我个人而言,我在本地开发并使用文件缓存进行测试,因为我当时只处理少量数据,并在生产环境中使用 redis 进行缓存。

    它不一定需要在单独的服务器上才能获得好处。如果您永远不会扩展到多个应用程序服务器,那么在同一台服务器上使用缓存服务对于缓存大型文档已经是一个很大的改进。

    关于laravel - Laravel 基于文件的缓存的大小限制是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33598245/

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