如果存在指定的cookie,我希望Akamai不缓存某些URL(即)如果用户在特定页面上登录。无论如何我们可以用Akamai吗?
答案 0 :(得分:3)
好消息是,我过去为Top Gear网站(www.topgear.com/uk)做了这个。逻辑是,如果存在cookie(在这种情况下为“TGCACHEKEY”),则为某些URL路径绕过Akamai缓存。这基本上会在登录时关闭Akamai对html页面的缓存。
坏消息是您需要Akamai顾问为您做出此更改。
如果这不是你的选择,那么彼得的建议都是好的。在为Top Gear实施基于cookie的方法之前,我考虑了所有这些,但最终没有一个是可行的。
请记住,默认情况下,Akamai会删除缓存资源的Cookie。在您的情况下,这可能会或可能不会影响您。
答案 1 :(得分:2)
边缘服务器在向您的原始服务器发出请求之前不检查cookie,我从未在其任何菜单,配置屏幕或文档中看到过类似的内容。
然而,我可以想到一些方法,你可以得到我认为你正在寻找的效果。
您可以在配置设置中为相应的数字属性指定您不希望其缓存的路径或URL。如果您正在谈论已登录的用户,您可能只有他们可以获得的路径,或者您可以设置这样的服务器端。例如。对于在线课程,您可以www.course.com/php.html
任何人都可以访问,而您可以使用www.course.com/student/php-lesson-1.html
获取实际登录的课程内容。指定不会缓存/student/*
将解决此问题。
如果您为登录和未登录的用户提供相同的页面而不能这样做,您可以检查服务器端是否已登录,如果是,则添加缓存破解了链接,因此当他们按照链接时,会自动添加缓存破坏程序。如果需要,您也可以执行此客户端,但在服务器端执行它会更安全,更快。作为一个注释,这可能是userid-random#。当与其他人没有请求它的页面结合使用并获得之前的“缓存破解”页面时,这将保持足够的独特性。
如果上述两种方法都不可行,我可以考虑另外一种方式,至少可以说有点不同寻常,但它会起作用。使用其他名称在文档根目录中创建符号链接目录,以便您可以应用第一个选项并使其免于缓存。然后检查该人是否已登录,如果是,则将额外目录添加到链接。从akamai的角度来看,www.mysite.com/logged-on/page.html
可以免除缓存www.mysite.com/content/page.html
的缓存。在您的服务器上,如果/logged-on/
符号链接到/content/
,那么您已完成设置。
当他们登录时,您可以将它们发送到设置为ServerAlias的子域,所以在您身边它是相同的,但在Akamai上有不同的缓存处理规则。
答案 2 :(得分:0)
按照与@llevera相同的答案,您可以在CloudFlare上使用Cookie,无需工程师干预即可为您进行更改。
拥有那种绕过内容的cookie是一种随着时间的推移变得越来越流行的技术,甚至像Magento这样的bug公司也在将它用于Magento 2平台。
但是上面的解决方案仍然有效,也许Akamai现在已经支持了,我们是2017年!