【发布时间】:2018-11-05 05:34:20
【问题描述】:
背景
我的目标是构建一个显示页面幻灯片的 Web 服务器。有些幻灯片可能只是一张图片,而有些幻灯片可能是带有 css 的文本。
安全
没什么花哨的,不会暴露在外面的世界。
界面
用户必须能够修改文本幻灯片中的文本。
用户必须能够修改幻灯片上显示的图像。
图像必须以自动方式更改(网络上的另一台机器创建图像并且应该能够将该图像推送到服务器以进行显示。或者,服务器应该能够下载图像本身,无论哪种方式) .
我有什么
在这个领域知之甚少,我开始阅读和修补。 LAMP 服务器看起来很简单。
我复制了一个slideshow container from w3(我后来意识到,据知识渊博的人说这是一个糟糕的来源),并删除了我不需要的东西。
我创造了:
- 用户输入文本的表单,保存在纯文本文件中(嗯,在我更新 Ubuntu 之前它可以工作,我猜包升级破坏了一些东西,现在表单只显示原始 php 代码。编辑:需要重新启用mods,可能是因为 php 从 5 升级到 7:
sudo a2enmod php7.2)。 - 我自己的 html 文本幻灯片,从文件中读取。修改时从文件中读取它很麻烦。我认为
txtFile.setRequestHeader('pragma', 'no-cache');就是这样做的。 - 带有本地图像的幻灯片
我真正的真正问题
复制新图像代替用作图像幻灯片输入的文件不会更改服务器显示的图像。这似乎是一个普遍的问题,并且在一年中提出了几种解决方案。这些我都没有成功。文件末尾的随机字符串和地址(难以自动化?),这块在我的 index.html 头中:
+ <!-- attempt to reload images on change, does not work: -->
+ <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
+ <meta http-equiv="Pragma" content="no-cache" />
+ <meta http-equiv="Expires" content="0" />
似乎浏览器,至少是 chrome,在避免缓存方面变得越来越严格。
所以在我的设置(Ubuntu 18.04、LAMP 的 apt 包和最近的 chrome)中,如何让我的服务器在显示幻灯片时从磁盘重新加载图像?
编辑:我不想刷新,服务器应该自动重新加载图像。
另一个可能实际上是罪魁祸首的模糊问题
我做事很奇怪吗?感觉开发这个比它应该做的更麻烦,所以我可能走错了路。你能引导我走向另一个更有意义的方向吗?
【问题讨论】:
-
我认为图像版本控制是您的最佳选择。每当您的用户上传新图像时,将该信息放入数据库中(如果有的话)并使用该行的 ID 使您的缓存爆裂。类似
<img src="{{image.url}}?v={{image.id}}"> -
我会尝试通过 php 文件提供图像:
<img src="getImage.php?id=xy">。根据我的经验(没有经过大量测试),它们不会被缓存。 -
在一个连续循环中使用 AJAX 来获取滑块的图像可能是一种有趣的方法。这样,即使没有刷新页面,它们也会持续更新。
标签: javascript php html server lamp