簡體   English   中英

頻繁使用的網站的緩存策略

[英]Caching strategy for heavily used web-site

我們正在為一個經常使用的網站設計緩存策略。 該站點包含動態和靜態內容。 前端是PHP,中間層是Tomcat,后面是mysql。

僅用戶登錄屏幕通過HTTPS完成,以保護憑據。 之后,所有內容都通過純HTTP提供。 一些屏幕是特定於客戶的(例如,他的最后訂單),而其他屏幕是每個人都通用的(最受歡迎的產品,促銷,規則等)。

給定預期的流量,很明顯,我們需要一個全面的緩存策略。 因此,我們正在考慮以下選項:

  1. 將Squid或Varnish放在PHP的前面並配置它以緩存所有公開內容甚至客戶的訂單提交表格
  2. 使用PHP的memcached來緩存頁面片段(例如最受歡迎的產品)
  3. 在中間層/ tomcats中實現緩存(即,在將內容返回到Web服務器之前,嘗試從本地緩存(例如ehcache)中獲取內容)
  4. 使用Zend Cache之類的PHP級緩存,並在其中存儲頁面的片段。 這接近於我提到的第二個選項,但它內置在Zend框架中。

我們可能會結合使用這些策略。

所以問題是,是否值得添加像Varnish這樣的前端緩存,還是僅在內部使用Zend Cache?


我忘了提到的另一個選項是使用Zend Cache之類的PHP級別的緩存並在那里存儲頁面的片段。 這接近於我提到的第二個選項,但它內置在Zend框架中。

所以問題是,是否值得添加像Varnish這樣的前端緩存,還是僅在內部使用Zend Cache?

再次感謝Philopator。

我已經完成了很多這樣的項目,發現:

  • 創建(完整的)自定義解決方案既困難又昂貴。 幸運的是,您發現了Squid / Varnish,memcache和ehcache
  • 網站的動態行為差異很大,您對網站的了解最深,因此設計一種特定的緩存策略很有意義。
  • 部署多層緩存很有意義。 但是,這會使您的網站的行為復雜化,因此您應該告訴與網站有關的每個人(例如,業務)有關此事的信息,並告訴您的工程師很多有關它的信息。
  • 想想如何調試問題。 例如,添加標頭以指示所提供數據的新鮮度,允許某些人清除或避免緩存
  • 定期檢查不同的緩存層的性能(例如,將nagios插件用於清漆機器)。
  • 在構建任何緩存之前,請先評估性能問題所在的位置:)
  • 短時間緩存某些對象已經是非常重要的改進

如今,我非常喜歡Varnish:它是一個獨立的層,不會使Java / PHP代碼混亂,它既快速又非常靈活。 缺點是vcl中的配置太復雜了。

我通常在內存存儲中使用ehcache +來避免小數據集的延遲(例如,數據庫查詢或服務請求),並在有大量數據且需要由多個節點共享緩存的情況下使用memcached。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM