切换到缓存后内容下载时间更长传输大小相同

问题描述

我将所有报价存储在 Redis 中(5 个排序的集合,例如最流行的、最新的等),因为我注意到在 PHP 中过滤它们比在 sql 中更快(我之前缓存了搜索结果,但这导致了另一个问题,但在这个问题中无关紧要))。
我注意到当我打开“CACHE_MODE”时,浏览器的等待时间较短,但内容下载时间较长(我使用谷歌浏览器进行检查)。如果两种情况下的返回值相同(只是加载时间发生变化),这怎么可能?

缓存关闭
等待 (TTFB):4.60 秒
内容下载:31ms
341 kB 已转移,362 kB 资源

缓存于:
等待 (TTFB):760 毫秒
内容下载:1.60s
341 kB 已转移,362 kB 资源

控制器:

// Ajax request
public function filterOffers(Request $request){

    (...)
    // Get from cache if possible,otherwise from database
    $offers = $this->offers->cache(true)->getAllActiveOffers($request->sort);

    // Filter results basing on user request
    $this->matchedOffers = $this->offers->filterCollectionForPublicList( $offers,$request);

    // Pagination
    $this->matchedOffers = $this->matchedOffers->paginate(10,count($this->matchedOffers),$request->page);

    return view('offers.partial.offersList',['offers' => $this->matchedOffers])->render();

优惠服务:

如果在 .env 中启用了缓存并且使用了 cache(true),请在缓存中查找键并获取它(如果存在)。否则,从数据库获取结果,将它们分配给一个键并返回它们。
P.S:我知道sql是可以优化的。

public function getAllActiveOffers($sort = 'default'){
    
    return $this->getFromCacheOrRefresh('allActiveOffers-sort-'.$sort,function() use($sort){
        return Offer::ActiveOffers()
            ->WithVariants()->with('locations')->with('promotions')->with('files')->with('categories')
            ->with(['owner' => function($query){
                return $query->with(['seller' => function($query){
                    return $query->with('Feedbackscore');
                }]);
            }])
            ->distinct()
            ->ordered($sort)
            ->get();
    });
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...