搜索引擎会在 Bootstrap 标签中看到我动态创建的内容吗?

Are search engines going to see my dynamically created content in Bootstrap tabs?

我有一个页面 index.php,里面有 3 个 Bootstrap 选项卡,对于每个选项卡,我都会在用户点击它后生成其内容。
例如:

这种方法好吗? Google 在索引包含所有这些选项卡的页面时是否也会看到所有这些数据?由于性能问题,我不想一次拉取所有数据。

这是我的示例代码,所以请告诉我这是否是一个好方法:

index.php 文件:

<!DOCTYPE html>
<html>
<head>
    <title>Tabs demo</title>
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
    <div class="container">
        <ul class="nav nav-tabs">
            <li class="active"><a data-toggle="tab" href="#home">Home</a></li>
            <li><a data-toggle="tab" href="#menu1">Menu 1</a></li>
            <li><a data-toggle="tab" href="#menu2">Menu 2</a></li>
        </ul>
        <div class="tab-content">
            <div id="home" class="tab-pane fade in active">
                <h3>HOME</h3>
                <p>Some content.</p>
            </div>
            <div id="menu1" class="tab-pane fade">
                <?php $model = [
                    0 => ['title' => 'First item', 'content' => 'Some first content'],
                    1 => ['title' => 'Second item', 'content' => 'Some second content']
                ]; ?>
                <?php foreach ($model as $data): ?>
                    <h3><?= $data['title'] ?></h3>
                    <p><?= $data['content'] ?></p>
                <?php endforeach ?>
            </div>
            <div id="menu2" class="tab-pane fade">
                <h3>Menu 2</h3>
                <p>Some content in menu 2.</p>
            </div>
        </div>
    </div>
<!-- jQuery library -->
<script src="//code.jquery.com/jquery-2.1.4.min.js"></script>
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>

恐怕搜索引擎看不到第二个和第三个标签的内容。或者至少他们不会将它们与 index.php 页面相关联。我错了吗?

不,如果选项卡下的内容是动态生成的(即不只是隐藏),我们 (Google) 将看不到选项卡后面的内容。

您还可以在 Search Console(以前的网站站长工具)中使用 Fetch as Google 查看我们 "see" 的内容;在标题为 Rendering pages with Fetch as Google 的 post 中阅读有关该功能的更多信息。

如果您正在使用 JS/AJAX,(我真的没有看到,但我想不出更好的选择)您将很难 Google索引你的页面。 Google 有一个很好的文档,在过去帮助我完成具有类似目标的项目。

https://developers.google.com/webmasters/ajax-crawling/docs/learn-more

在单击选项卡之前不加载内容真的有那么重要吗?除非你正在使用一个不可缓存的不断更新的数据库和大量 HTML 输出,这会产生大量无样式的内容,否则我会说拆分选项卡视图代码有点微不足道。

最好的方法是将网站设计为在没有 javascript 的情况下工作,只需替换所有使用 ajax 的锚元素,将 GET 变量传递给您的网络控制器,这样它就知道return 只是 html 与 javascript 一起插入。

也许这可以帮助:

如果您的问题是性能,那可能是因为您有强大的数据库查询或共享服务器。如果不是,请忽略。

加载整个页面时,在每个选项卡中放置一个 "fake" HTML 代码。尝试将 HTML 代码构建为单击每个选项卡时加载的真实代码。将所有这些放在一个看不见的 DIV 中。每次加载页面时,还要放入一些随机数据(可能是一个 16 个字符的随机生成的字符串)。通过这种方式,我认为 Google 会更频繁地抓取您的数据(静态内容不会发生这种情况)。

此致。