每次在轨道上的ruby中的同一页面上使用时,从db中反复加载一张照片是不好的做法吗?

Lon*_*Guy 0 ruby rubygems ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

作为我网站上的一项功能,我有微信发布功能,其他用户可以回复评论.当用户进入他们的帐户区域时,他们也可以查看他们的帖子并查看评论.我正在完成此项目后正在清理并注意到当用户进入他们的帐户区域时,我的日志显示以下内容:完整日志:此处

我很担心:

1)日志中显示用户照片多次加载的部分.我猜这是同一个用户在其他用户或他们自己的个人资料的几篇帖子上留下了几条评论.它一遍又一遍地加载相同的照片.这不应该只是一次,然后一些如何再次使用加载照片每次再次出现?或者可以一次又一次地加载相同的照片?

2)我注意到日志中的一些地方显示了这一点:

CACHE (0.0ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` =  LIMIT 1
        [9e77936f78cd46e332128ec31ccc5964] [127.0.0.1]   CACHE (0.0ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` =  LIMIT 1
        [9e77936f78cd46e332128ec31ccc5964] [127.0.0.1]   CACHE (0.0ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` =  LIMIT 1
Run Code Online (Sandbox Code Playgroud)

看起来它似乎在寻找什么.这是正常的吗?如果没有,那么任何想法为什么会发生?我想追查这个问题并阻止它.除此之外,我的网站似乎完美无缺,但我不确定这是不是幕后故事.

3)我的日志中有什么我应该注意的吗?有什么坏事要发现吗?

所有建议都赞赏

亲切的问候

Roh*_*bhu 5

您是否使用JavaScript加载图片?在这种情况下,您可能会为同一张照片反复拨打后端.

如果您使用URL加载它,它是否与照片的URL相同?例如,你这样做:

http://example.com/getPhoto?userid=2&comment=10
Run Code Online (Sandbox Code Playgroud)

当你应该做的时候:

http://example.com/getPhoto?userid=2
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,您的浏览器将缓存图像,您不必担心它.浏览器将只关注图像被提取一次.

此外,如果您以正确的方式执行此操作,请检查响应中的HTTP标头,尤其是Cache-control字段.是否有机会这样说:

Cache-Control: No-Cache
Run Code Online (Sandbox Code Playgroud)

如果是这种情况,则要求浏览器不保留缓存,因此一次又一次地请求服务器获取相同的资源.只是省略它会起作用,或者你可以设置它max-age <something>.