重定向丢失的图像文件的最快方法

|| 我有一个即时缩略图系统,正在尝试寻找最好的方法,以确保在提供图像时尽可能快。这是当前的流程: 用户请求缩略图
thumbnails/this-is-the-image-name.gif?w=200&h=100&c=true
htaccess文件使用modrewrite将请求从此文件夹发送到PHP文件 PHP文件根据查询字符串值在请求的图像中检查“ 1” 如果是这样:
header(\'content-type: image/jpeg\'); 
echo file_get_contents($file_check_path); 
die();
如果不是,它将创建缩略图并返回。 我的问题是是否有办法将其优化为更快?理想情况下,我的htaccess文件将执行file_exists,并且仅在不这样做时才将您发送到PHP文件...但是由于我使用的是查询字符串,因此无法构建动态URL进行检查。是否值得从查询字符串切换到实际文件请求,然后在htaccess中进行是否存在检查?会更快吗?我更喜欢查询字符串语法,但是当前所有请求都转到PHP文件,该文件将返回图像(无论是否存在)。 感谢您提前输入!     
已邀请:
        从理论上讲,您应该能够做到这一点。
RewriteCond
命令具有标记
-f
,可用于检查文件的存在。您应该能够拥有这样的规则:
# If the file doesn\'t exist
RewriteCond %{REQUEST_FILENAME} !-f

# off to PHP we go
RewriteRule (.*)   your-code.php [L,QSA]
这里的问题是,我想您正在根据传入的参数来命名文件-所以上面的示例可能是
thumbnails/this-is-the-image-name-200-100.gif
。如果是这种情况,您将需要生成一个文件名以进行即时测试,然后检查该文件名而不是“ 7”字样-具体细节确实取决于您的设置。如果可以的话,我建议您使用一些不需要太多努力的系统。例如,您可以将缩略图存储在类似于“ 8”的目录结构中的文件系统中,与“ 9”相比,在重写规则中检查缩略图更容易。 如果您尚未签出,Apache的mod_rewrite指南中有很多不错的示例。 更新:因此,您实际上需要从外观上检查动态文件名。我认为最简单的方法是将生成的文件名粘贴到环境变量中,如下所示(我从另一个问题中借用来充实它):
# generate potential thumbnail filename
RewriteCond %{SCRIPT_FILENAME}%{QUERY_STRING} /([a-zA-Z0-9-]+).(jpg|gif|png)w=([0-9]+)&h=([0-9]+)(&c=(true|false))

# store it in a variable
RewriteRule .* - [E=thumbnail:%1-%2-%3-%4-%6.jpg]

# check to see if it exists
RewriteCond %{DOCUMENT_ROOT}/path/%{ENV:thumbnail} !-f 

# off to PHP we go
RewriteRule (.*)   thumbnail.php?file_name=%1&type=%2&w=%3&h=%4&c=%6 [L,QSA]
这是完全未经测试的,并且肯定无法正常工作。我会建议几件事: 另外,我为您提供的一项重要建议是,如果可能,请打开日志记录并将
RewriteLogLevel
设置为较高的水平。重写规则的日志可能很复杂,但是绝对可以让您了解发生了什么。您需要服务器访问权限才能执行此操作-如果我记得,您不能将日志记录配置放在.htaccess文件中。     

要回复问题请先登录注册