关于php在设置伪静态后与实际静态文件的访问顺序
业务场景:网站需要建设为全静态的站点,后台生成较为繁琐,更新频度要么太久,要么太慢,如果遇到较大数据量的系统,页面生成速度很容易被限制,出现更新时间太长的问题,
而如果采用前台生成的话,有访问到的才会生成,需要伪静态的支持,其他页面都会暂时被忽略但是只要链接在或者被蜘蛛爬行页面会自然生成,但是这样就违背的全静态的初衷。
问题:php在设置伪静态后,如果真实静态文件存在,是否会先访问真实的静态文件,在真实静态文件不存在的情况下才访问伪静态?
测试方式:设置一个静态页面index.htm,
先在httpd.conf中配置DirectoryIndex index.htm index.php
然后在.htaccess中配置RewriteRule ^index.htm$ index.php
两个文件呈现的内容是不同的,结果发现浏览器始终访问index.php页面而忽略了index.htm
结论:设置了伪静态后所有的页面都将经过index.php,除非伪静态规则不识别能直接访问到静态页面,否则都将访问php程序
思考:项目中遇到这个问题,后来采用了变相处理方式,就是让访问先进伪静态php,判断静态页面是否存在,如果存在直接display静态页面,省去了数据库的查询,同时可以做一个缓存,如果超过缓存时间则重新生成静态页面
码字很辛苦,转载请注明来自NAERENET的《关于php在设置伪静态后与实际静态文件的访问顺序》