繁体   English   中英

如果存在某些Cookie,则绕过Akamai的特定URL

[英]Bypass specific URL from Akamai if certain cookie exist

我希望Akamai如果存在指定的cookie,即不缓存某些URL(即,如果用户在特定页面上登录)。 无论如何,我们可以使用Akamai吗?

好消息是,我过去在Top Gear网站(www.topgear.com/uk)上确实做到了这一点。 逻辑是,如果存在cookie(在本例中为“ TGCACHEKEY”),则将绕过Akamai缓存以获取某些URL路径。 基本上,这会在登录时关闭html页面的Akamai缓存。

坏消息是您需要Akamai顾问才能为您进行此更改。

如果这不是您的选择,那么Peter的建议都是好的。 在为Top Gear实施基于cookie的方法之前,我已经考虑了所有这些方法,但最后没有一个可行。

还请记住,默认情况下,Akamai会为缓存的资源剥离cookie。 这可能会或可能不会影响您的情况。

边缘服务器在向原始服务器发出请求之前不会检查cookie,而且我从未在其菜单,conf屏幕或文档中看到任何类似的信息。

但是,我可以通过几种方法来获得想要的效果。

  1. 您可以在相应数字资产的配置设置中指定您不希望其缓存的路径或URL。 如果您要谈论的是登录用户,则可能只有他们可以访问的路径,或者可以在服务器端设置这种方式。 例如,对于在线课程,您将拥有任何人都可以访问的www.course.com/php.html ,而您可以将www.course.com/student/php-lesson-1.html用于实际的登录课程内容。 指定不缓存/student/*将解决此问题。

  2. 如果您要为登录的用户和未登录的用户提供相同的页面,并且无法通过这种方式进行操作,则可以检查服务器端是否已登录,如果是,则在链接中添加一个缓存破坏者,以便当他们遵循链接时,会自动添加一个缓存破坏者。 您也可以根据需要在客户端进行此操作,但是在服务器端进行此操作将更安全,更快捷。 注意,这可以是userid-random#。 当与页面组合在一起时,这将使它足够独特,其他任何人都不会请求它并获得较早的“缓存中断”页面。

  3. 如果以上两种方法都不可行,那么我可以想到另一种方法,至少可以说这有点不合常规,但是它可以工作。 在文档根目录中使用另一个名称创建符号链接的目录,以便您可以应用第一个选项并将其免于缓存。 然后,您检查该家伙是否已登录,如果已登录,则将多余的目录添加到链接之前。 从akamai的角度来看,可以将www.mysite.com/logged-on/page.html从缓存了www.mysite.com/content/page.html的缓存中排除。 在您的服务器上,如果/logged-on/象征性地链接到/content/那么您已经准备就绪。

  4. 当他们登录时,您可以将它们发送到设置为ServerAlias的子域中,因此从您的角度来看,这是相同的,但是Akamai的缓存处理规则不同。

按照与@llevera相同的答案,您可以在CloudFlare上使用Cookie,而无需工程师干预即可为您进行更改。

随着时间的流逝,使用这种cookie绕过内容是一种越来越流行的技术,甚至像Magento这样的bug公司也将其用于Magento 2平台。

但是从头开始的解决方案仍然有效,也许Akamai已经支持我们,即2017年!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM