簡體   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