Server Side Include : 服务器端嵌入
原理 : 将内容发送到浏览器之前,可以使用“服务器端包含 (SSI)”指令将文本、图形或应用程序信息包含到网页中。因为包含 SSI 指令的文件要求特殊处理,所以必须为所有 SSI 文件赋予 SSI文件扩展名。默认扩展名是 .stm、.shtm 和 .shtml
主要有以下几种用用途:
显示服务器端环境变量<#echo>
将文本内容直接插入到文档中<#include>
显示WEB文档相关信息<#flastmod #fsize> (如文件制作日期/大小等)
直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)
设置SSI信息显示格式<#config>;(如文件制作日期/大小显示方式) 高级SSI<XSSI>;可设置变量使用if条件语句。
为什么用SSI?
一个登录用户在页面访问的时候如何充分利用 cache?
页面静态化的一个大问题是登录用户访问页面如何静态化。例如首页,大部分的页面内容需要缓存但是用户登录后的个人信息是动态信息,不能缓存。那么如何解决这个"页面部分缓存"问题?
现有的方案是利用 SSI - Server Side include 。
这里最关键的就是静态文件可以包含一个动态的网页的 URL 。
主要是三个参数,ssi,ssi_silent_errors和ssi_types,均可以放在http,server和location的作用域下。
ssi on
开启ssi支持,默认是off
ssi_silent_errors on
默认值是off,开启后在处理SSI文件出错时不输出错误提示:"[an error occurred while processing the directive] "
ssi_types
默认是ssi_types text/html,所以如果需要htm和html支持,则不需要设置这句,如果需要shtml支持,则需要设置:ssi_types text/shtml
编辑 Nginx 配置文件
vi /usr/local/nginx/conf/nginx.conf
加入如下代码
1、开启shtml后缀的文件名支持ssi
server{
......
ssi on;
ssi_silent_errors on;
ssi_types text/shtml;
}
2、开启html后缀的文件名支持ssi
server{
......
ssi on;
ssi_silent_errors on;
}
3、在sample目录下开启html后缀的文件名支持ssi
server{
......
location /sample/{
ssi on;
ssi_silent_errors on;
}
}
保存 重启 nginx
正确写法 < !--#include file="ui_php_json_encode_decode.html"-->
正确写法 < !--#include virtual="/ui_php_json_encode_decode.html"-->
路径是相对server中root根目录。
错误写法 <!--#include file="https://www.abclogs.com/ui_php_json_encode_decode.html"-->
错误写法 <!--#include file="/var/www/html/website/static/ssi/needtoinclude/ui_php_json_encode_decode.html"-->