Запрос Asp.net. Браузер. Поисковый робот - динамический список поискового робота?

Один из способов подойти к этому - отложить рендеринг потомка до момента монтирования родителя. Шаги будут выглядеть следующим образом:

  • исходный родительский рендер не рендерит Child (например, подавить использование флага в родительском состоянии)
  • Parent componentDidMount выполняет стороннюю инициализацию и изменяет флаг в родительском состоянии, вызывая повторную визуализацию родителя
  • повторная визуализация родительской функции теперь визуализирует дочерний элемент, и родительский элемент может передавать стороннюю информацию об инициализации дочернему элементу через опору

Полученный код будет выглядеть примерно так:

import React from "react";
import ReactDOM from "react-dom";

class ThirdPartyLib {
  init(elementId) {
    console.log(`initializing element: ${elementId}`);
    this.element = document.getElementById(elementId);
    this.element.style.color = "red";
  }
}

class Parent extends React.Component {
  constructor(props) {
    super(props);
    this.state = { initialized: false };
    console.log("Parent's constructor");
  }

  render() {
    console.log("rendering Parent");
    return (
      
Parent: {this.props.name} {this.state.initialized && ( )}
); } componentDidMount() { console.log("Parent is mounted"); const thirdPartyLib = new ThirdPartyLib(); thirdPartyLib.init("parent"); this.setState({ initialized: true, thirdPartyLib }); } } class Child extends React.Component { constructor(props) { super(props); console.log(`Child ${this.props.name} constructor`); console.log( `Child knows stuff from thirdPartyLib: ${ this.props.thirdPartyLib.element.id }` ); } render() { console.log(`rendering Child: ${this.props.name}`); return (
Child: {this.props.name}
ThirdPartyLib element id: {this.props.thirdPartyLib.element.id}
); } componentDidMount() { console.log(`Child ${this.props.name} is mounted`); } } const rootElement = document.getElementById("root"); ReactDOM.render(, rootElement);

Edit 82q69v3469

8
задан Kara 24 April 2014 в 00:18
поделиться

2 ответа

Я был счастлив результаты, предоставленные Browsercaps Океана. Это поддерживает поисковые роботы, которые файлы конфигурации Microsoft не потрудились обнаруживать. Это выровняет синтаксический анализ, какая версия поискового робота находится на Вашем сайте, не, что мне действительно нужен тот уровень детализации.

11
ответ дан 5 December 2019 в 10:05
поделиться

Вы могли проверить (regex) по Request.UserAgent.

Peter Bromberg написал хорошую статью о записи Уничтожителя Регистратора и Поискового робота Запроса ASP.NET в ASP.NET.

Вот метод, который он использует в его Logger класс:

public static bool IsCrawler(HttpRequest request)
{
   // set next line to "bool isCrawler = false; to use this to deny certain bots
   bool isCrawler = request.Browser.Crawler;
   // Microsoft doesn't properly detect several crawlers
   if (!isCrawler)
   {
       // put any additional known crawlers in the Regex below
       // you can also use this list to deny certain bots instead, if desired:
       // just set bool isCrawler = false; for first line in method 
       // and only have the ones you want to deny in the following Regex list
       Regex regEx = new Regex("Slurp|slurp|ask|Ask|Teoma|teoma");
       isCrawler = regEx.Match(request.UserAgent).Success;
   }
   return isCrawler;
}
6
ответ дан 5 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: