我需要爲PHP應用程序實現一種快速緩存機制。它的工作原理如下:多個節點服務器從中央服務器(VIA JSON服務)請求數據。節點服務器應該以一種快速高效的方式緩存文件系統上的響應。這就是問題 - 什麼是存儲部分最優化的解決方案。我有一些類型 - XML(聽說它對於許多記錄可能是低效的),將數組定義與PHP文件中的內容存儲在一起,或者只是將一組記錄轉儲到文件中。對於這種情況,哪種方法最有效?或者也許別的東西?我需要注意的是,它必須在沒有任何額外的庫和SQL的情況下以乾淨的PHP> = 5.2實現。PHP自定義數據服務緩存
0
A
回答
1
鑑於您提供的信息,我會建議簡單地將JSON字符串轉儲到文件。這意味着不需要外部庫或SQL引擎。
如果你想要「人類可讀」的東西,你也可以使用XML,但是XML並不是那麼快,你當然需要額外的時間來生成XML,然後才能存儲數據緩存。
讀取僅僅是從文件中獲取字符串並通過json_decode運行的一種情況。如果您只需要部分數據而不是整個批次,則可以通過將json對象拆分成塊並寫入單個文件來提高讀取性能,這會降低一些寫入速度(不會太多),但會提高讀取速度更好。
通過寫入配置有ext2文件系統的分區,寫入速度可能會更好。
但是,除非您使用大型數據集和多個緩存文件,否則沒有真正的理由進入這種優化範圍,將json作爲字符串寫入文件,讀取它應該不夠好爲你。
0
您不應該爲只有一個應用程序的內容緩存生成XML文件。這是開銷生成和解析XML,並導致需要更多的字節。
生成了PHP的文件是有效的,但也有一些問題吧: - 可能解析錯誤 - 可以緩存數據的兩倍
我寧願(的OS + PHP操作碼 - 緩存文件系統緩存)將緩存文件作爲簡單的序列化PHP數據打包,因爲它具有較低的解析語義並且非常有效。你也可以使用像igbinary或mgspack這樣的二進制序列化器來加速它。
順便說一句:如果你從不同的網絡節點上的遠程服務緩存數據,我會建議你使用像memcached的緩存服務器;)
相關問題
- 1. 自定義網絡服務器緩存
- 2. WCF服務緩存數據?
- 3. Rails w /自定義TCP數據服務
- 4. WCF數據服務自定義XML
- 5. 自定義ADO.NET數據服務異常
- 6. 自定義內存緩存
- 7. 如何在服務器端緩存ASP.NET自定義HttpHandler響應
- 8. WSO2數據業務服務器 - 添加自定義數據源
- 9. CodeIgniter自定義緩存
- 10. 緩存自定義類
- 11. Angularjs緩存AJAX數據到服務
- 12. 的node.js JSON服務器數據緩存
- 13. 使用Tomcat服務器緩存數據
- 14. ASP.Net服務器側數據緩存
- 15. android緩存web服務數據
- 16. CMIS:在服務器端緩存數據
- 17. ADO.NET數據服務'Astoria'和緩存
- 18. Azure WebApp自定義PHP服務器
- 19. IdentityServer3自定義用戶服務與自定義存儲庫
- 20. Magento模塊PHP緩存?或者服務器緩存PHP?
- 21. 緩存用戶定義函數的輸出(ms sql服務器)
- 22. 自定義「添加數據」 - 如何將數據發佈到PHP服務器?
- 23. 獲取緩存在Windows AppFabric緩存服務中的數據
- 24. 將自定義服務注入到自定義服務
- 25. ADO.NET數據服務和自定義數據源
- 26. 創建一個自定義任務,以緩存數據到html的需求
- 27. Infinispan - 創建自定義緩存存儲
- 28. Cloudfront決定從緩存或服務器獲取數據?
- 29. 數據驗證管理器中的自定義業務服務
- 30. 刷新PHP服務器緩存
會有什麼數據被用於節點服務器上?你寫得越快,閱讀的速度就越慢,所以你必須根據寫作的多少和閱讀的多少來進行折衷,當然,一旦數據讀出,你對數據做了什麼。 – Lee
節點服務器將是一種將數據顯示給最終用戶的CMS。我想盡量減少第一個用戶請求的延遲(當節點服務器上的緩存爲空時),所以我認爲寫作應儘可能少。 –