访问/重写上传图片的更有效方式

时间:2016-06-21 12:04:21

标签: php mysql .htaccess mod-rewrite

目前我们将图片上传存储在以下目录和格式中:

/uploads/products/{product_id}.jpg

但是,我们不希望公开显示此uploads目录,也不希望公开产品的唯一ID,因此我们会按如下方式重写请求的图像网址(使用.htaccess和PHP):

/images/products/{product_url}.jpg

作为参考,这对应于相关产品,例如:

/products/{product_url}

这有利于隐藏原始上传文件夹以及每个产品的唯一ID,方法是将ID重写为该产品的相应网址(这显然是公众所知)。

这个改写部分效果很好;我们通过.htaccess处理每个请求,然后使用PHP根据给定的ID查询数据库并检索产品的URL。但是,由于每个页面可以多次调用此过程,因此与数据库的连接数量可能会非常荒谬和缓慢。在某些页面上,我们最终会重新连接数据库20次以上,每次请求的产品图像一次,这感觉完全错误,可能根本没有效率。

有没有更好的方法来管理这个过程?我们仍然希望继续重写图片以显示产品的网址,而不是在可能的情况下公开产品的ID或uploads文件夹。

我想过生成一个带有ID =>列表的JSON文件。 URL对然后根据图像请求解析,而不是重新连接和查询数据库,但我不确定这是否是一个有效,更快的替代方案?

(我还考虑过持久的数据库连接,但如果存在任何其他可行的解决方案,我现在暂时不会走这条路线。)

修改

更多信息可能有所帮助。我们目前使用.htaccess将上述图片请求重写为单个文件image.php

RewriteRule ^images/products/(.*)$ image.php?url=$1 [L,QSA]

每次请求图像时,都会调用此文件,检查URL是否有效,如果是,则显示位于/uploads/products/{product_id}.jpg下的真实文件。

因此,每当浏览器遇到指向<img>的{​​{1}}标记时,每次加载图像时都会启动重写/数据库处理,这就是我对提高效率的质疑(因此每次都有新的数据库连接)。

0 个答案:

没有答案
相关问题