-1

我试图了解 PHP 缓存。我正在使用 Symfony 2 并试图将一些东西放在一起。

映像缓存整个页面的网关缓存或反向代理缓存。JavaScript 如何受此影响?

因此,假设您有一个很少更改的页面(可能一周一次) - 您可能会将其缓存一周。但是想象一下,你有一个 JavaScript 函数在那个页面上做了一些事情,比如说一个可折叠的脚本。想象一下默认情况下,HTML 显示所有面板都打开,并且 JS 在本地存储中记住一个值,并在页面加载后关闭需要的面板(记住状态)。这将如何影响缓存?

所以对我来说,最好的方法是只缓存 HTML,然后无论如何都要执行 JS(毫无疑问,JS 文件已经被缓存了)。或者它是否会截取屏幕截图,如果页面被缓存时一半可折叠面板打开和一半关闭,那么它们将始终看起来像那样(直到缓存被清除)。

我正在尝试确定 ESI 是否更好,或者我应该如何创建一些东西以便能够利用缓存但仍保留某些动态功能。最好的方法是缓存所有 HTML 并允许 JS、CSS 和其他所有内容从缓存的 JS/CSS 文件中再次运行,无论是什么。

4

2 回答 2

1

缓存仅保存服务器交付的 HTML。如果 javascript 修改了 DOM,则缓存的 DOM 不受 javascript 的影响。javascript 将每次运行,无论 HTML 是“新鲜”还是来自缓存。对于缓存,您几乎唯一需要担心的问题是确保缓存在应该更新的时候得到更新,因此您不会提供“陈旧”的缓存。

于 2013-05-04T23:07:32.803 回答
1

任何缓存都与数据如何从服务器到客户端(例如 Web 浏览器)有关;它与客户端如何解释该数据无关。(想想一个输出文本文件的非常慢的 PHP 脚本;文本文件的用途无关紧要,这是您使用缓存避免的慢 PHP。)

您不能缓存 HTML 页面的屏幕呈现,因为呈现完全是浏览器的工作(因此不同的浏览器可能呈现不同的内容)。JS 的执行就像渲染 HTML - 浏览器对内容的解释的一部分。

所以你的问题的答案是缓存对你的 JS 没有任何影响。

于 2013-05-04T23:07:57.963 回答