重新生成目录缓存映像问题


19

我正在执行从Magento 1.9.2.4到Magento 2.1.6的迁移过程,迁移完成后,我将M1的媒体文件夹移动到pub / media M2。

现在的问题是某些图像未在catalog / Cache文件夹中生成

例如下面的图像转到404未找到

pub/media/catalog/product/cache/f9c7fbe9b524c081a3ccf800cbd963eb/m/s/msj006c-red_2.jpg
pub/media/catalog/product/cache/75eed2686e01eb22cb4050b2f40ddf97/m/s/msj006c-red_2.jpg
pub/media/catalog/product/cache/f9c7fbe9b524c081a3ccf800cbd963eb/m/s/msj006c-red_2.jpg

我确实喜欢简单地删除目录缓存文件夹并再次加载页面,但是仍然会损坏图像。

我的页面中有50%的图像损坏

在此处输入图片说明

可以分享解决方法来解决此问题?


嗨比拉尔u能请帮助我,并建议magento.stackexchange.com/questions/283277/...
Nagarajuķ

Answers:


29

您应该尝试使用image resize命令预先生成所有必要的调整大小。

php bin/magento catalog:image:resize

此命令获取在主题XML中定义的所有图像大小,并在其正确的文件夹中预生成图像。

您也可以查看命令文档以获取更多信息http://devdocs.magento.com/guides/v2.1/frontend-dev-guide/themes/theme-images.html


5
仅供参考-此命令绝对永久地在任何大小的商店上运行。在最近的一次跑步中,我们看到了17小时以上的时间。在其他情况下,它需要运行一个周末。参见:github.com/magento/magento2/issues/8145
Leland

我遇到了同样的问题,我运行显示的此cmd图像,但是刷新刷新后,所有图像再次破碎,并且缓存文件夹中没有图像
imtiazau

1
如果您使用php bin / magento catalog:image:resize,则将花费超过1天的时间,还有其他最佳方法吗?
Soundararajan m


我正在使用snipboard.io/JZ2bQR.jpg从Magento 1获取Magento 2图像 ,如何解决缓存问题?@Alex
宝石

0

我也遇到了这个问题,即使上面提到的命令行图像生成也不起作用。看来Magento 正在缓存创建缩略图的信息,甚至标准的Magento缓存清理(命令行或管理面板)都不会从缓存中删除此信息。

我手动删除了所有缓存目录的内容,它有所帮助:

rm -Rf var/cache/*
rm -Rf var/page_cache/*

.. 等等。然后,在浏览网站时,图像缩略图应按需正确生成。


0

我有这个完全相同的问题,但与Magento 2.3.2

对我来说,是产品缩略图具有错误的缓存哈希路径。产品和类别图像正确,但是大拇指URL不正确,并显示std Magento图像占位符。

我正在使用自定义主题。

当使用SHH“ php bin / magento catalog:images:resize”-发生了什么事?图像是使用Luma主题etc / view.xml而不是自定义主题etc / view.xml文件生成的。

问题。在使用与Luma主题使用不同大小的图像的浏览器中查看我的自定义主题时,Magento找不到图像并显示404错误。

解决。

Replace Luma themes etc/view.xml with my custom theme etc/view.xml
Using SHH run "php bin/magento catalog:images:resize

我花了一周时间来找出解决方法,但现在一切正常。



0

在2019年11月20日回答:

通过命令重新生成图像缓存并不是一种可行的解决方案,因为某些产品很多的网站将花费大量时间。另外,我遇​​到了一些问题,例如,如果我们从CLI生成缓存映像,它将起作用。当我们当时从管理员刷新图像或手动删除缓存的图像时,它将不会在页面加载时再次生成缓存图像,因此我需要一次又一次地运行regenerate命令。根据我的观点,最好的解决方案是在页面加载时生成图像缓存。

默认流

默认的Magento流是在加载图像(媒体)时,它将始终通过请求传递到pub / get.php并检查图像是否存在。如果不存在,它将生成一个新的缓存图像。如果存在,它将返回该路径。因此,默认情况下,图像应在页面加载时生成。

我们可以在以下文件中检查通过逻辑

pub/media/.htaccess用于apache服务器

RewriteRule .* ../get.php [L]
.............................
.............................

nginx.conf.sample对于Nginx服务器

location /media/ {
    try_files $uri $uri/ /get.php$is_args$args;
    .......................................
    .......................................

如何检查此逻辑是否正常?

放在echo "test";exit;pub / get.php的开头并加载所有缓存的媒体URL,它应该打印测试。否则,您的服务器配置有问题。

对我来说,每当我删除目录缓存目录(rm -rf pub / media / catalog / product / cache / *)之后,当我们加载页面时,它将不会生成新的缓存图像,并且会转到404页面,找不到和也永远不会到达get.php。然后,我注意到许多文件夹具有不正确的权限,不同于文件夹的755和文件的644。设置正确的权限后,它可以正常工作。

我希望它能提供一些想法。


任何帮助magento.stackexchange.com/q/296715/57334感谢@Bilal Usean
zus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.