我在理解一个概念上有困难。
假设您已登录并向购物车中添加了一些项目,但未签出您已注销。下次登录时,您会发现购物车中有您以前添加的项目。
我想知道这个概念是如何运作的?经过一番研究,我知道它正在使用缓存文件。但是这个缓存文件是如何工作的呢?此缓存文件与后端数据库的关系如何?
最佳答案
当你问了更多的问题-一个与购物车和存储的物品有关,一个或两个与缓存相关,并且Jay Gilford回答了与购物车相关的部分时,这里是缓存的答案:
Opencart缓存您在每次页面加载时使用最多的数据:货币、语言、类别、产品、类别产品计数、权重类、税务类等。在获取数据时,Opencart在查询数据库之前查找缓存的数据(现在让我们讨论前端/目录)。如果发现有缓存的数据,它们将被提取和非序列化(它们使用PHP函数serialize()
存储在纯文本文件中),并返回到控制器,而不查询数据库,因此提取速度应该快得多1。如果没有缓存数据,则查询数据库,然后序列化(使用PHP函数serilizae()
)获取的数据库数据并保存到相应的缓存文件中。
这里有一个可能会出现的小问题-在直接编辑数据库中的数据(使用phpMyAdmin,可能原因是什么)之后,更改不会出现在前端。这是因为有一些旧的缓存数据在请求时被获取。如果必须进行此类编辑,请不要忘记手动删除相应的缓存文件。
这将我们引向模型的管理(后端)部分-在这里,当编辑或添加数据(类别、产品、货币、权重类等)数据成功存储到数据库后,相应的缓存文件将立即删除,以便可以在前端重新创建包含最新数据的缓存文件。
缓存文件可以在/system/cache/
文件夹中找到。
编辑:缓存在index.php
中被实例化和注册,然后在控制器和模型中都可以作为$this->cache
访问,而方法set()
、get()
和delete()
是可调用的。cache类本身可以在system/library/cache.php
中找到,并且非常简单和直接。
这样的回答足够吗?
我见过一个服务器,它的PHP-MySQL通信速度非常快,而文件系统访问速度却很慢。。。
关于php - opencart中的购物车问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13512169/