如果存在指定的 cookie(即)如果用户在特定页面上登录,我希望 Akamai 不缓存某些 URL。无论如何,我们可以使用 Akamai 吗?
3 回答
好消息是,我过去曾为 Top Gear 网站 (www.topgear.com/uk) 这样做过。逻辑是,如果存在 cookie(在本例中为“TGCACHEKEY”),则某些 url 路径将绕过 Akamai 缓存。这基本上会在登录时关闭 Akamai 对 html 页面的缓存。
坏消息是您需要 Akamai 顾问为您进行此更改。
如果这不是您的选择,那么彼得的建议都是好的。在为 Top Gear 实施基于 cookie 的方法之前,我考虑了所有这些,但最终没有一个是可行的。
另请记住,默认情况下,Akamai 会去除缓存资源的 cookie。在您的情况下,这可能会或可能不会影响您。
边缘服务器在向您的源服务器发出请求之前不会检查 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 上具有不同的缓存处理规则。
按照与@llevera 相同的答案,您可以在 CloudFlare 上使用 cookie,而无需工程师干预来为您进行更改。
使用这种 cookie 绕过内容是一种随着时间越来越流行的技术,甚至像 Magento 这样的漏洞公司也将它用于 Magento 2 平台。
但是上面的解决方案仍然有效,也许 Akamai 现在已经支持这一点,我们在 2017 年!