Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SVG sprite文件-它是否需要有“";”;。svg";只要内容类型标题设置正确,php/nothing是否正常?_Php_Svg - Fatal编程技术网

SVG sprite文件-它是否需要有“";”;。svg";只要内容类型标题设置正确,php/nothing是否正常?

SVG sprite文件-它是否需要有“";”;。svg";只要内容类型标题设置正确,php/nothing是否正常?,php,svg,Php,Svg,我有一个PHP脚本,可以动态生成SVG精灵。当然,该文件以.php结尾,而不是.svg结尾 我用标题('Content-type:image/svg+xml')在脚本顶部设置内容类型 我将nginx设置为php扩展是可选的,因此我现在可以使用以下内容引用我的svg图标: 可以吗?它在我测试过的浏览器中工作——我只是不知道我是否错过了一些浏览器优化,因为它在检索文件之前无法“猜测”内容类型 顺便说一句,我还设置了这些缓存头,这看起来适合一年的远期到期吗 header('Cache-Control

我有一个PHP脚本,可以动态生成SVG精灵。当然,该文件以
.php
结尾,而不是
.svg
结尾

我用
标题('Content-type:image/svg+xml')在脚本顶部设置内容类型

我将nginx设置为php扩展是可选的,因此我现在可以使用以下内容引用我的svg图标:

可以吗?它在我测试过的浏览器中工作——我只是不知道我是否错过了一些浏览器优化,因为它在检索文件之前无法“猜测”内容类型

顺便说一句,我还设置了这些缓存头,这看起来适合一年的远期到期吗

header('Cache-Control: public, max-age=31536000');
header_remove('Pragma');
header_remove('Set-Cookie');
header_remove('Expires');
header('Accept-Ranges: bytes');

您是对的,
内容类型
标题才是最重要的

一般来说,浏览器不会将URL分解为“目录”、“文件名”和“扩展名”等部分;事实上,HTTP根本没有“文件”的概念。相反,URL只是要发送到某个服务器的字符串;然后,服务器用一些内容和一个指示应该如何解释该内容的标题进行响应

无论您将SVG引用为
/icons
,还是
/icons.php
,还是
/icons.awesome
,浏览器都只会发送该URL,而不知道响应是来自具有该名称的文件,还是来自其他名称的文件,还是根据需要生成的文件


您可以在这个页面上看到这一点:URL不以“.html”结尾,但浏览器正在呈现html。这并不依赖于浏览器中内置的某些默认值,因为Stack Overflow服务器发送的
内容类型
头将返回的内容标识为
text/html

当然,浏览器查看mime类型,而不关心扩展名。这就是HTTP和文件系统访问之间的区别。文件后缀在HTTP中绝对没有意义-因为没有“文件”开头,只有URL。谢谢。我非常熟悉在html资源上删除html/php扩展;但不确定在图像/etc资源上这样做是否会隐藏陷阱。我知道它是有效的,我只是想确保它不会在某个地方引起一个小的光点!