我正在尝试理解PHP缓存。我正在使用Symfony 2并尝试将某些东西放在一起。
映像缓存整页的网关缓存或反向代理缓存。 JavaScript如何受此影响?
所以想象你有一个很少改变的页面(可能每周一次) - 你可能会把它缓存一个星期。但是想象一下,你有一个JavaScript函数在该页面上做了一些事情,比如一个可折叠的脚本。想象一下,默认情况下,HTML会显示所有面板都打开,并且JS会记住本地存储中的值,并且在页面加载后它会关闭需要的面板(记住状态)。这会如何影响缓存?
所以对我来说最好的方法是只缓存HTML,然后JS随后执行(毫无疑问JS文件已经被缓存)。或者它是否采取屏幕截图,如果页面缓存,一半可折叠面板打开,一半关闭,那么它们将始终如此(直到缓存被清除)。
我正在尝试研究ESI是否更好,或者我应该如何创建一些东西以便能够利用缓存但仍保留某些动态功能。最好的方法是缓存所有HTML并允许JS,CSS和其他所有内容从缓存的JS / CSS文件中再次运行,无论是什么。
答案 0 :(得分:1)
缓存仅保存服务器提供的HTML。如果javascript修改了DOM,则缓存的DOM不受javascript的影响。无论HTML是“新鲜”还是缓存,javascript都会每次运行。使用缓存时,您唯一需要担心的问题是确保缓存在应用时得到更新,因此您不会提供“陈旧”缓存。
答案 1 :(得分:1)
任何缓存都与数据如何从服务器传输到客户端(例如Web浏览器)有关;它与客户端如何解释数据无关。 (想想一个非常慢的PHP脚本,它输出一个文本文件;文本文件的用途是无关紧要的,这是你用缓存避免的慢速PHP。)
您无法缓存HTML页面的屏幕呈现,因为该呈现完全是浏览器的工作(因此不同的浏览器可能会以不同的方式呈现内容)。执行JS就像渲染HTML一样 - 浏览器对内容的解释。
所以你的问题的答案是缓存对你的JS没有任何影响。