1

Spider からリクエストを受け取ると、Phantom JS プロセスを開始し、動的 ​​HTML をレンダリングします。(OnExecuting フィルターを使用して ActionResult を設定する)

しかし、このメソッドにも OutputCache フィルターが配置されており、邪魔になっています。

例えば:

ステップ 1. 通常のユーザー エージェントでページをロードします。(出力キャッシュは URL をキャッシュします) ステップ 2. スパイダー ユーザー エージェントでページを読み込みます。(以前にキャッシュされた応答がスパイダーに送信され、私の Phantom JS フィルターは実行されません)

4

1 に答える 1

1

VaryByCustomリクエストが検索エンジン クローラーからのものである場合に「キャッシュ ミス」を強制するために使用します。

あなたのController/Action

[OutputCache(VaryByCustom="Crawler")]
public ActionResult Index()
{
     // ...
     return View();
}

次に、あなたのGlobal.asax

public override string GetVaryByCustomString(HttpContext context, string arg)
{
    if (arg == "Crawler" && context.Request.Browser.Crawler)
           return Guid.NewGuid().ToString();

    return base.GetVaryByCustomString(context, arg);
}
于 2013-11-14T06:44:47.083 に答える