我有1000行PHP会话文件,必须一个人向用户显示,我想避免数据传输



我有1000行PHP会话文件,必须一个人向用户显示,我想避免或减少数据旋转。哪个是最好的方法?

通常,您只会在会话数据中保留特定于用户的信息。例如,用户投入购物车的物品可能会去那里。

如果要在检索目录时要减少DB服务器上的负载,则要进行某种缓存。有很多选择,但最常见的选择是:

  • 备忘录。这是您的Web服务器(或附近服务器上)上的另一个过程。
  • APC。这是我个人最喜欢的简单部署。它是PHP的附加组件,但是安装后,您无需管理或观看任何其他服务器流程。
  • 文件系统。这易于实现,并且不需要任何新的软件,附加组件或进程。您所需要的只是一个可以由Web服务器编写的目录。

基本思想是:获取目录数据的功能:

Retrieve the catalog from the cache.
If the catalog is not in cache
    Get the data from the database
    Create the catalog object/array
    Save the catalog to the cache
Return the catalog

使用memcached and apc,数据将自动为您序列化,并且可以声明您希望将数据缓存多长时间。一旦其时间用完,数据将从缓存中消失。这样,您可以确保以合理的间隔从数据库中刷新目录。

如果您使用的是文件系统,则必须为自己做更多的工作。您必须检查缓存文件的年龄(要查看是否是时候刷新数据了),并且必须调用serialize()unserialize()以将您的数据对象转换为可保存的字节流并再次返回。

当您渲染HTML页面时,您只需要将信息放入用户所看到的信息中即可。通常无需一次将整个目录发送给用户。

如果目录很大,则可以考虑在单独的缓存条目中将单个项目缓存,而不是将整个内容放入缓存中。您确实必须担任"太大"的法官。通常,网络I/O是Web服务器和数据库的最延迟问题,因此您可以从磁盘中读取令人惊讶的数据,而不会显示任何性能降解(在您注意到任何东西之前,都超过一百千键)。

我不会使用会话变量存储产品数据并避免数据。如果要减轻重量,则可以在HTML文件中使用CSS,并且可以使用较短的功能和可变名称。在通常的产品中,产品数据存储在(MySQL)数据库中。当您想避免使用特殊数据库时,还有SQLITE可与普通文件一起使用。您还可以在浏览器中压缩产品数据并取消压缩,但是现代服务器和浏览器已经支持压缩,因此,只有当产品数据对其进行良好的压缩或您使用共享的WebShoster和/或Admin non do'时,这仅是有意义的。想启用压缩。

最新更新