【问题标题】:Page Views counter sinatra?页面浏览量计数器 sinatra?
【发布时间】:2015-04-19 16:42:05
【问题描述】:

如何在 Sinatra 和 Ruby 中实现页面浏览量计数器?

我已经尝试了@@ 变量,但是每当页面加载时它们都会重置为零...

喜欢这个:http://148.251.142.233:8080/

谢谢!

【问题讨论】:

  • 在数据库中的页面对象中添加一个附加字段“计数器”。对该页面的每个请求都使用 +1 更新它。
  • DB 中的页面对象是什么意思?
  • 您将页面数据保存在哪里?它们是静态的还是动态的(由数据库字段中的数据填充)?如果它们是静态的,您必须将视图计数存储在应用程序的文件中的某个位置。这会很丑陋,但是您可以在用户每次请求页面时使用文件打开并保存,并将查看次数保留在该特定文件中。这能回答你的问题吗?

标签: javascript html ruby sinatra


【解决方案1】:

我认为你的问题是你不能像往常一样在 sinatra 中存储全局变量。您需要在这样的设置中存储页面浏览次数数据

set :my_config_property, 'hello world'

这是关于它的文档http://www.sinatrarb.com/configuration.html 所以关于它的问题In Sinatra(Ruby), how should I create global variables which are assigned values only once in the application lifetime?

【讨论】:

    【解决方案2】:

    仅将值存储在内存中是不够的,因为您的应用程序服务器可能会为不同进程提供请求,并且每个进程都会有不同的类变量副本。 即使在服务器重置时可以正常工作,您仍然会丢失计数器值。

    我会使用像Redis 这样的专用数据库。做你想做的事非常快速和容易。你只需使用这样的东西:

    require "redis"
    redis = Redis.new
    total_pageviews = redis.incr("page_counter")
    

    【讨论】:

      猜你喜欢
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-24
      • 1970-01-01
      • 2018-01-08
      • 2020-10-24
      • 1970-01-01
      相关资源
      最近更新 更多