Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 缓存特定于用户的查询django_Json_Django_Caching - Fatal编程技术网

Json 缓存特定于用户的查询django

Json 缓存特定于用户的查询django,json,django,caching,Json,Django,Caching,我有一个存储媒体URL(图像/视频)的表和一个使用这些URL的前端应用程序。我正在尝试实现缓存,以使这一切运行得更快、更具可扩展性 问题是我有一个likes表,它存储特定用户喜欢的视频/图像。我需要返回一个布尔值以及图像/视频url,说明用户是否已经喜欢该媒体 现在我只是缓存返回的图像/视频的json,然后从缓存中获取它,并在json响应中插入一个“like”属性。这看起来像这样: 这将运行并检查缓存中是否存在特定的介质页: media_json = cache.get('media'+user

我有一个存储媒体URL(图像/视频)的表和一个使用这些URL的前端应用程序。我正在尝试实现缓存,以使这一切运行得更快、更具可扩展性

问题是我有一个likes表,它存储特定用户喜欢的视频/图像。我需要返回一个布尔值以及图像/视频url,说明用户是否已经喜欢该媒体

现在我只是缓存返回的图像/视频的json,然后从缓存中获取它,并在json响应中插入一个“like”属性。这看起来像这样:

这将运行并检查缓存中是否存在特定的介质页:

media_json = cache.get('media'+username+str(page))
if media_json:
    new_json = []
    media_ids = []
    for media in tags_json:
        media_ids.append(media['media_id'])

    user_likes = Like.objects.filter(created_by=user,media__pk__in=media_ids)

    for media in media_json:

        liked = False
        for user_like in user_likes:
            if user_like.media_id == int(media['media_id']):
                liked = True

        media['liked'] = liked
        new_json.append(media)

    return JsonResponse({'response': 1, 'media': new_json})
如果媒体页面不在缓存中,那么我查询数据库并从头创建json响应


如何缓存用户喜欢的某个媒体?最好我不必再次查询数据库。

查询数据库可能不是一件坏事,它可能比序列化/反序列化json并对其进行迭代要高效得多。事实上,您最好将其转换为一个表,这样您就可以使用一个简单的查询来确定用户是否喜欢某样东西。我已经用它运行了负载测试,它比再次查询db的速度快2倍左右。似乎我不能做任何事情,但喜欢。你的数据库中的字段是否正确索引?您是否对查询进行了“解释”以查看是否实际使用了索引?查询数据库可能并不是一件坏事,它可能比序列化/反序列化json并遍历它更有效。事实上,您最好将其转换为一个表,这样您就可以使用一个简单的查询来确定用户是否喜欢某样东西。我已经用它运行了负载测试,它比再次查询db的速度快2倍左右。似乎我不能做任何事情,但喜欢。你的数据库中的字段是否正确索引?您是否对查询进行了“解释”以查看索引是否实际被使用?