中午有小友和我提了这个疑问“静态化也会访问数据库?”
我的答案是:不可能。除非你并没有做到真正的静态化。 我一度怀疑小友只是伪静态了。
网站的一般流程(不是那么详细)就是,用户打开浏览器访问网站,网站后端从数据库读取数据并展现给用户。
很多网站的网址是 类似 http://sanshu.cn/article?id=1 ,这样不利于浏览器缓存,所以我们会使用伪静态,将 http://sanshu.cn/a/1.html 在后台转到 http://sanshu.cn/article?id=1 , 每次请求都会转过去。
所以用户每访问一个网站就意味着请求1次或N次数据库请求。 但实际上返回的内容可能是一毛一样的。用户量大了,数据库压力也会变大,尤其是遇到慢查询的时候。
所以我们优化者就会尝试静态化,从数据库拉去数据后就会保存成一个和url一毛一样路径的静态文件。 比如,当你访问 "http://www.sanshu.cn/a/1.html" 的时候,就会在三叔的后端服务器的目录 /xxxx/xxxx/sanshu.cn/a/目录下出现一个1.html 文件。
等你第二次访问的时候,发现目录下直接就有这个文件,就会连伪静态都不会过直接返回这个静态文件。就和直接请求返回 http://sanshu.cn/img/xxx.jpg 一个道理只是后缀不一样而已。
所以伪静态和静态的区别就是,伪静态还是会去查数据库,而纯静态会直接返回a目录下的1.html文件。
当然如果你用了CDN,再CDN有效的情况下 伪静态和静态化没太多区别。