0

我正在尝试在 website.com 的某些页面上向新访问者展示一些内容(介绍)。如果他们已经看过它,我希望再次“不打扰”用户。

假设用户进入 website.com/cool-article,然后我在顶部向用户显示介绍,然后当用户单击 website.com/useful-article-43 时,该页面现在不应包含介绍。还是我应该保留介绍并在第二页上向下滚动用户?如果用户是回访者,我也不想显示介绍。网站是用 PHP 构建的。

担心的是 - 您会选择哪些解决方案来确保 SE 机器人不会因为内容的变化而发疯?据我了解,机器人永远不会带来任何推荐人信息。

选项:

1) 查找 $_SERVER['HTTP_REFERER'] ($httpReferer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;)
如果设置为 mywebsite.com 或 NULL
DO A 或 B

2) 存储并检查用户访问页面时设置的 cookie。session_start(); if !$_SESSION['intro']
DO A 或 B
$_SESSION['intro']='introSeen';

3) 通过 JS/localStorage?
(不必要的内容加载?)

你会怎么做?

(A&B)

A)根本不加载页面介绍

  • +当用户点击保存的链接到达页面时,加载时间更短,用户也一样。
  • - 混乱的风险
  • - 页面看起来不一样。

B)将用户向下滚动到文章,将介绍放在顶部。

  • +如果用户向上滚动页面看起来和以前一样。
  • +网站始终为所有用户和机器人提供相同的内容。
  • - 不必要的内容加载
4

1 回答 1

1

我解决这个问题的方法是使用客户端持久存储,例如 cookie 或localStorage. 这样,始终提供相同的内容,并且用户的浏览器决定是否显示介绍。

如果用户没有访问过,很容易实现一个在内容上方创建介绍的 JavaScript 解决方案:

(function firstTime() {
    var introduction = '<div id="firstTime">Hello! This is your first time here!</div>';
    if (localStorage.visited === undefined) {
        document.body.innerHTML = introduction + document.body.innerHTML;
        localStorage.visited = true;
    }
})();

您可以修改它以适应您的情况,或使用 cookie 以获得更好的向后兼容性。

看看它在行动:http: //jsfiddle.net/howderek/WYmkp/5/

于 2013-10-29T14:55:07.790 回答