我正在尝试确定将图像的上次修改日期存储在 MySQL 数据库中还是使用 PHP 函数是否更好文件时间 https://www.php.net/manual/en/function.filemtime.php.
就我而言,所有网站信息都存储在数据库(cms)中,因此总是有一个查询来提取图像路径等。问题是出于缓存目的,我需要将 HTML 输出如下所示<img src="/img/photo.jpg?v20190613" />
。根据我在 php.net 网站上读到的内容,该函数已被缓存。那么是使用更少的资源向数据库表中添加一个存储最后更新时间戳的字段还是每次都使用这个函数呢?这两种方式都有什么优点吗?我正在寻找能够提供最佳性能的任何东西。
我不会用文件时间() https://www.php.net/manual/en/function.filemtime.php,出于一个特定原因:它仅适用于检查运行 PHP 代码的同一主机上的本地文件。
在现代应用程序部署中,将 PHP 代码部署到与提供静态资源的主机不同的主机上是很常见的。事实上,通常将 PHP 代码部署到负载均衡器后面的多个应用程序服务器,因此您可以进行滚动部署而不会造成任何停机。
您今天可能没有这种架构。您可以将 PHP 代码部署到静态文件所在的同一主机以及数据库。但是,当您的应用程序无法满足单个主机的需求,或者需要在部署期间不间断运行时,您最终需要扩展到多个主机。最好尽早计划,并且如果可以避免的话,不要实现阻止您扩展的代码。
PHP 应用程序服务器都无法直接访问保存静态文件的文件系统。如果他们这样做,您必须执行以下操作之一:
- 在每个 PHP 应用程序服务器上存储静态文件的重复副本,使用更多的存储空间。然后担心保持它们同步,使用一些后端脚本来不断检查所有主机是否具有相同的文件集等。
- 通过 NFS 或类似协议将静态文件的文件系统远程安装到所有 PHP 应用程序主机。然后
filemtime()
检查会变得有些慢,因为它们是通过 NFS 进行的。您还必须担心 NFS 安装消失、安全实施、添加新应用程序主机时配置 NFS 等等。
出于这些原因,我选择将时间戳放入数据库中,因为无论如何您已经存储了文件元数据(路径名)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)