[英]Store MySQL set result in PHP session array to lessen database lookups
將數據庫結果集存儲在用戶會話中是否合理/負責任的想法,而不是在每次頁面加載時從數據庫中重新加載數據庫結果集? 我知道在服務器上的緩存文件中緩存生成的HTML代碼的可用性,但我認為這有太多的便利問題。
例如,在購物頁面上,主導航中的品牌標簽有一個下拉菜單,其中列出了當前在網站上有產品的所有品牌。 查詢已經過優化,但仍然需要在每次加載頁面時運行。 而不是這樣做我想將結果集保存在用戶的會話中,因此每個會話只加載一次品牌。
或者,我可以為subnav生成HTML代碼並將其存儲在服務器上的緩存文件中。 如果在會話中存儲陣列的想法不利於服務器的性能,我可能會看到過去的便利問題。
感謝您的幫助!
有沒有什么理由你不能使用像Memcached這樣的傳統緩存而不是試圖將它塞進會話?
以這種方式使用會話緩存的問題是它會造成混亂。 會話數據應盡可能保持精簡,因為它會在每個請求中加載。 傾倒大量數據可能會嚴重拖累性能。
在會話中存儲東西似乎總是“方便”,但除非它與會話本身嚴格相關,否則最好避免。
在這種情況下,我建議去找Memcached 。
有關設置和配置的說明,請訪問: https : //www.digitalocean.com/community/articles/how-to-install-and-use-memcache-on-ubuntu-12-04 (請注意,這是針對Ubuntu但它會給你一個好主意)
其他人建議使用Memcached。 它增加了復雜性並需要RAM(因此如果它們在同一台服務器上運行,它會使MySQL變得更慢)。 它可能是最適合您的解決方案,但由於我不知道任何“對每個人都有好處”的解決方案,並且由於我不知道您的工作量,我只是建議替代方案。
是的,MySQL查詢緩存有很多問題。 但它可能對你有好處。
如果沒有太多東西要緩存,MEMORY表也可能是一個很好的解決方案。
在會話數據中存儲緩存可能比根本不緩存更糟糕,因為每個用戶的數據都是重復的,並且僅在會話到期時才進行清理。 不要那樣浪費你的記憶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.