【发布时间】:2015-06-14 21:41:01
【问题描述】:
我用php动态生成svgz图片,例如:
<?php
header("Content-Encoding: gzip");
header("Content-Type: image/svg+xml");
$wth=1280;$hth=180;
$hd="<svg width='".$wth."' height='".$hth."' viewBox='0 0 ".$wth." ".$hth."' xmlns='http://www.w3.org/2000/svg' version='1.1'>";
$hd.="<rect x='0' y='0' width='".$wth."' height='".$hth."' fill='green'/>";
$rad=25;$ncr=20;$rcv=['yellow','gray','red'];
for($c=0;$c<$ncr;$c++){$hd.="<circle cx='".mt_rand($rad,$wth-$rad)."' cy='".mt_rand($rad,$hth-$rad)."' r='".$rad."' fill='".$rcv[mt_rand(0,count($rcv)-1)]."'/>";}
$hd.="</svg>";
echo gzencode($hd,9);
?>
在我的 htaccess 文件中添加:
ExpiresActive on
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/svg+xml "access plus 60 seconds"
ExpiresDefault "access plus 0 seconds"
但它没有按预期工作,并且 php-svg 图像文件始终显示 200 OK 状态 我也简单地尝试过:
ExpiresActive on
ExpiresByType image/png "access plus 1 month"
ExpiresDefault "access plus 60 seconds"
(这不适合我的需要,因为我希望所有其他 html/xml 文件为 0 秒) 而且这样 php-svg 图像也不会被缓存,并且会出现 200 OK
请注意,其他作为 html 的 php 文件也不会被缓存 (???)
在这两种情况下,png 文件都按预期缓存并提供 304 状态
我也尝试添加一个
ini.set('session.cache_limiter','public')
ini.set('session.cache_expire',60)
直接在php-svg文件中没有结果
请注意,在我的 php.ini 文件中,设置是
session.cache_limiter = nocache
session.cache_expire = 180
怎么了? 是否存在与某些 php.ini 配置相关的问题? htaccess 是否覆盖 php.ini ? 有没有不需要修改php ini的解决方案?
非常欢迎任何帮助!
乔凡尼 (我的网站:http://isbooth.com)
【问题讨论】:
标签: php .htaccess caching dynamic svg