我有一个网站,允许用户将照片贡献(上传(到相册。
为了保护照片,它们存储在/public_html
之外的文件夹中,并通过名为PHPThumb的脚本显示在页面中,该脚本显示质量较低的照片的小尺寸调整版本(因为可以上传高分辨率照片(,并且还允许用户在照片中添加水印。
我的问题是,有时当特定相册(页面(的流量很大时,某些照片没有显示,或者整个页面完全显示500 Internal Server Error
(即使我使用分页并且每页仅显示 40 张照片(。需要几秒钟,有时甚至几分钟才能恢复网站。
我认为使用缩略图库可以减轻负载,因为服务器不必发送整个高分辨率照片,而只需发送调整大小的版本。但事实似乎并非如此。
我正在使用共享的虚拟主机包,虽然我知道不建议将共享用于我的网络应用程序,但在我决定升级我的虚拟主机包之前,我想探索任何其他选项来改进网站。
关于防止500
错误的任何建议?
鉴于上述设置,也会接受有关良好网络主机的建议。(我不太精通服务器管理。
-
这些缩略图不是在每个请求上动态生成的,它们会被缓存,对吧?如果没有,你可以从那里开始。
-
将原始图像存储在公共目录之外是有意义的,但您可以考虑将缩略图存储在公共目录中,以便可以直接提供它们,而无需处理。
-
此外,请确保在提供这些缩略图时发送正确的缓存标头。考虑到缩略图是较大版本的小复制品,它不会改变,因此您可以将到期日期设置得很远。
3.1 但是,在您的情况下,您允许用户在缩略图上添加水印,以便您可以根据该水印缓存缩略图。您可以对图像名称+水印进行哈希处理并获取缩略图名称。如果水印会改变,缩略图名称也会不同,所以"遥遥领先"的缓存过期标头不会咬你。