Nginx

如何使用記憶體反向代理(例如 Squid、Varnish 或 Nginx)記憶體具有個性化標頭的網頁

  • April 20, 2010

我網站的幾乎每個頁面都是動態生成的。但是,它們不會經常更改(有點類似於論壇頁面)。所以我想使用記憶體反向代理來記憶體它們,例如 Squid、varnish 或 Nginx。

問題是,對於我的登錄使用者,他們每個人都會在頁面的右上角看到一個個性化的標題,上面寫著“歡迎 John Doe。註銷”(就像 serverfault 一樣)。而未登錄的使用者將看到一個標有“登錄”的標題。

所以基本上即使每個使用者都會看到相同的頁面,但由於個性化的標題,他們都會略有不同的版本。

有什麼方法可以讓我記憶體頁面的“主要”部分並從記憶體中提供它,同時為每個使用者動態生成個性化標題?

這一定是一個非常普遍的問題。一般是怎麼解決的?

使用 Varnish,您可以使用 ESI,但是,如果不增加一些複雜性,則無法壓縮 ESI 處理的頁面。 http://varnish-cache.org/wiki/ESIfeatures

我沒有在生產中使用它,但是,Nginx 還通過外掛提供 ESI 功能,http://wiki.github.com/taf2/nginx-esi/

Nginx 確實通過http://wiki.nginx.org/NginxHttpProxyModule#proxy_cache提供記憶體,並且與其他外掛一起處理片段組裝和記憶體。

http://www.trygve-lie.com/blog/entry/esi_explained_simple解釋了 ESI。

或者,您可以在應用程序端進行自己的片段記憶體。

引用自:https://serverfault.com/questions/130532