我有一个建立在sailsjs上的网站。我希望对整个网站使用的 CTA 进行 A/B 测试......并认为实现这一目标的最简单方法是将 1 或 0 写入 cookie。拥有 1 的用户将获得 CTA 的 A 版;拥有 2 的用户获得版本 B.非常简单。
我遇到麻烦的地方是为所有用户编写cookie - 无论他们首先登陆哪个页面。我看到我如何从控制器轻松执行此操作,但这只会为访问该特定页面的用户编写 cookie......而且我不想在站点上的每个控制器中复制此代码。
有没有人对我如何实现这一目标的正确方法有任何建议?
谢谢。
有几种方法可以在 Sails 中执行此操作。 您经常会在策略中看到类似的事情,但最佳做法是纯粹将策略用于访问控制。 另一种方法是使用自定义中间件,但这对您的情况来说可能是矫枉过正的。 我推荐一个自定义钩子,它很容易配置(并在不同的应用程序中重复使用(:
// api/hooks/add-cookie.js
module.exports = function addCookie(sails) {
return {
// Add some routes to the app.
routes: {
// Add these routes _before_ anything defined in `config/routes.js`.
before: {
// Add a route that will match everything (using skipAssets to...skip assets!)
'/*': {
fn: function(req, res, next) {
// Set the cookie.
res.cookie('myCookie', 123);
// Continue with the request.
return next();
},
skipAssets: true
}
}
}
};
};