Javascript PHP Mysql:避免页面浏览溢出?

Javascript PHP Mysql:避免页面浏览溢出?,javascript,php,mysql,Javascript,Php,Mysql,所以我有一些个人资料页面需要有页面视图。我将视图数据存储在mysql和php(实际上是laravel)中。基本思想是在每次访问配置文件时添加视图1 基本思想是在概要页面中添加一个php代码,如 $page->view += 1; $page->save(); 但是如果用户多次点击f5怎么办?这将导致查询大量运行,我担心最终会减慢应用程序的速度 我正在考虑在用户点击f5时使用js进行提示,并调用ajax来添加视图。但是我想知道是否有更好的解决方案(比如,youtube是如何处理他们的

所以我有一些个人资料页面需要有页面视图。我将视图数据存储在mysql和php(实际上是laravel)中。基本思想是在每次访问配置文件时添加视图1

基本思想是在概要页面中添加一个php代码,如

$page->view += 1; $page->save();
但是如果用户多次点击f5怎么办?这将导致查询大量运行,我担心最终会减慢应用程序的速度


我正在考虑在用户点击f5时使用js进行提示,并调用ajax来添加视图。但是我想知道是否有更好的解决方案(比如,youtube是如何处理他们的浏览量的)?

你可以在页面上花费一定的时间来计算浏览量

要实现这一点,您需要一个延迟的javascript函数,如:

setTimeout(函数(){countView()},3000)(3秒延迟)

其中
countView()
应该是对运行
$page->view+=1的函数的ajax调用$页面->保存()


由于Ajax调用是异步的,因此执行不会延迟您的应用程序流,尽管页面视图表上的简单增量不会对性能造成太大损害

只要用户不删除cookie,这将起作用

if ($_COOKIE['returning']!="yes")
 {
   // first visit!
 }
setcookie("returning", "yes", time()+360000);

另一种方法是将IP记录到数据库中,并检查用户是否已经访问过,但代码比我现在发布的更复杂。如果被接受,我将在以后编辑这篇文章。

请注意,内联代码的跨度(
,如下图所示)
),仅适用于句子中的代码。谢谢问题是PHP。此外,这将不起作用,因为它们仍然可以刷新很多次,除非它们需要等待3秒钟。更多的时间会锁定页面。您缺少
异步
的哪一部分?它不会锁定页面。哈哈,等等?你疯了吗?不要把这件事放在心上,我们只是在讨论编程我的主要观点是,他们仍然可以在不久之后增加页面数。您知道OP没有说明任何关于登录用户(不同用户名)的内容,并且您的代码将阻止多个用户的视图增加<代码>$\u访问第一个配置文件时将设置COOKIE['username']
,但它也会阻止其他配置文件上的增量。是。我知道。“用户名”关键字可以是任何内容。